타운광장토픽게시판

IIS에서는 opcache, wincache 어떤 캐시를 사용해야 하는지 의견이 분분합니다.

 

IIS포럼에서는 opcahe만 켜라 wincache는 무의미하다는 글도 있고,

php.net에서는 둘 다 사용하는 것을 권장하기도 합니다. (https://www.php.net/manual/en/install.windows.recommended.php)

 

 

그래서 직접 실험해서 ttfb를 비교해 봤습니다. (각각 100회씩)

1. opcache 활성화 && rhymix 시스템설정 > 캐시 사용에서 

캐시 사용하지 않음 16.04~26 ms

file 15.81~26 ms
wincache 14.07~25 ms
 

 

2. opcache 비활성 && rhymix 시스템설정 > 캐시 사용에서 

캐시 사용하지 않음 54.22~64 ms

file 53.70~60 ms
wincache 52.08~60 ms

 

 

결론은 둘 다 켜는것이 좀 더 빠르긴한데 큰 차이는 없어 보입니다.

다만 opcache는 무조건 활성화 하는 것이 좋을 것 같습니다.

 

11.jpg

 

  • profile

    라이믹스에서 opcache 관련해서는 옵션 자체가 없습니다. PHP에 기본으로 포함된 기능이고, 묻지도 따지지도 않고 무조건 켠다고 가정하기 때문입니다. 안 켜면 가만히 앉아서 3~4배의 성능을 손해봅니다.

     

    wincache나 memcache는 거기에 더하여 사용하는 것이지 opcache를 대체하는 용도가 아닙니다. opcache만 쓰는 것도 현실적인 시나리오이고, opcache+wincache도 현실적인 시나리오이지만, opcache 없이 wincache만 쓴다는 것은 처음부터 앞뒤가 맞지 않는 상황입니다.

     

    방금 설치한 빈 사이트에서 이런 캐시를 추가한다고 TTFB가 더 빨라지지도 않습니다. 오히려 더 느려지는 경우도 있습니다. 애초에 TTFB를 향상시키는 기능으로 설계된 것이 아니기 때문입니다. wincache나 memcache 같은 추가적인 캐시는 데이터가 많이 쌓이고 접속자가 늘어났을 때 비로소 진가를 발휘합니다. 접속자가 많은 사이트에서 memcache를 쓰느냐 안 쓰느냐는 서버 부하(즉, 운영비)에 적게는 10배, 많게는 100배 이상의 차이를 낳을 수도 있습니다. TTFB만 보는 벤치마크로는 이런 효과를 알 수가 없습니다.

  • profile profile

    애초에 캐시에 대한 이해가 부족하기에 실험이 잘못 되었군요.
    라이믹스에 opcahe옵션이 없는 것은 알고 있었고 wincache가 이를 대체하지 않는다는 것도 알고 있습니다.
    다만, 제가 알고 싶었던 것은 각각 php 컴파일, 파일/변수캐싱에서 차이가 나기에 이런 opcache와 wincache를 같이 써도 성능향상이 있는가? 충돌이 없는가? 였습니다. (memcache는 논외로 하구요)
    말씀하신데로 누구는 느려진다, 의미없다, 빨라진다 의견이 분분하며, 이부분을 명확하게 답변한 곳이 없더군요.

    답글 달아주신 opcache+wincache가 현실적인 대안이 될 수 있다는 데서, 같이 써도 괜찮을 수 있다는 귀중한 정보를 얻고 갑니다. 감사합니다.
    다음번엔 실사용서버에 테스트해 봐서 제게 맞는 설정을 사용해야겠네요.^^

  • profile profile

    네, opcache를 쓰면 3~4배 빨라진다는 것에는 이견이 없지만 wincache 등의 추가적인 캐시에 대해서는 다양한 의견과 벤치마크 결과가 나올 수 있습니다. 이런 캐시의 효과는 "쓰기 나름"이기 때문입니다.

    똑같은 라이믹스 사이트에서 테스트하더라도 캐시를 많이 사용하는 화면과 그렇지 않은 화면에서 큰 차이가 날 수 있습니다. 예를 들어 위젯 캐시가 0으로 설정된 위젯이 잔뜩 붙어 있는 페이지에서 테스트한다면 wincache든 memcache든 무엇을 사용하더라도 효과가 없는 것으로 나오겠지요. 사이트마다 사용하는 모듈과 위젯들이 다 다르니 테스트 결과도 다를 수밖에요. 여기에 정답은 없습니다. 각 사이트의 필요에 따라 튜닝이 필요할 뿐...

    또 하나의 교란변수가 있습니다. XE나 라이믹스에서 캐시를 사용하지 않더라도 사이트 정보, 모듈 정보, 모듈 설정 등의 필수 데이터는 파일 캐시를 사용하여 강제로 캐싱됩니다. opcache는 파일 캐시를 메모리 캐시로 바꿔주는 효과가 있으므로, opcache만 사용하더라도 이런 정보는 무조건 메모리에 캐싱되는 셈입니다. 이것 때문에 추가적인 캐시를 사용하는 효과가 크지 않아 보일 수도 있습니다.

  • profile profile

    명확하게 정리해주셔서 감사합니다. 게다가 추가설명까지^^

    사실, 글을 작성할때 이게 잘못된 정보가 되지 않을까 우려스러웠는데, 결국 제대로 된 정보는 기진곰님이 제공해 주셨네요. 기진곰님 같이 글의 오류를 바로잡아주시는 분들이 계서서 다행이에요. 토픽글이 질문/답변 글로 바뀌어버렸네요 ㅜㅜ

  • profile profile

    캐시에 대해서 불확실하거나 위험한 정보가 너무 많이 돌아다니고 있어서 제가 좀 민감하게 반응합니다. ㅎㅎ

     

    님이 테스트하신 TTFB 수치는 지극히 자연스러운 결과이므로 거기에 대한 이견은 없습니다. RXE 초기 상태에서는 opcache 설치 유무가 wincache 사용 유무보다 훨씬 큰 차이를 보여주지요.

    그런데 몇 년만 지나도 상황이 바뀌는 경우도 있어요. 예를 들어 apc와 xcache는 과거에는 성능 향상에 반드시 필요한 확장모듈이었지만 PHP 5.5부터 opcache가 기본 포함되면서 예전에 쓰던 캐시 확장모듈들 모두 초토화가 되었지요. 그나마 apc가 opcache와 충돌하는 부분을 제거하고 apcu라는 이름으로 살아남았는데, 한동안 불안정해서 사용을 권하기 어려웠어요. 그런데 이제는 (PHP 7.2 이상 버전 기준) apcu도 충분히 안정화되어서 중소규모 사이트라면 memcache보다 더 빠른 성능을 보여주기 때문에 저도 요즘은 다시 apcu를 권하고 있습니다. 반전에 반전을 거듭했지요. 어떤 버전을 사용하여 언제 테스트했는지 확인하지 않으면 성능이나 안정성에 대한 평가를 믿을 수 없다는 뜻입니다. 특히 7.0 미만 버전에서 성능에 대해 써놓은 수많은 블로그와 팁글들은 이제 다 폐기해야 하는 상황이네요.