memcache와 opcache?

 opcache는 php파일을 미리 네이티브 코드로 컴파일해서 캐싱하여 php 속도를 올릴 수 있는 캐싱방법으로 알고있습니다.

현재 라이믹스 내부에서 파일 캐시 방식을 사용하고 있는데, 파일캐시가 어차피 opcache 방식으로 메모리에 올려져 있으므로 맴캐시는 따로 필요없다고 생각이 드는데 폭시 opcache와 맴캐시를 동시에 적용하면 더 빨라지나요?
  • profile

    opcache는 적용하고 말고 선택할 필요가 없습니다. PHP 5.5 이상이라면 opcache는 무조건 쓰는 겁니다. 그 밖의 모든 캐시 방법은 opcache에 더하여 쓰는 거지, opcache를 대체하는 개념이 아닙니다.

     

    이론적으로는 파일캐시만 사용해도 opcache가 메모리에 다 올려주니까 memcache를 따로 쓰는 것과 별 차이가 없어야겠지요. 그러나 현실적으로는 캐시파일이 너무 많이 쌓여서 성능이 저하되거나 관리가 힘들어질 수도 있고, stdClass를 var_export할 수 없기 때문에 반드시 serialize를 거쳐야 해서 네이티브 코드가 아닌 문자열 상태로 저장되고, 게다가 opcache에 너무 많은 부담을 주면 디버깅하기 아주 힘든 에러가 발생하기도 하기 때문에... 웹호스팅 등 불가피한 상황 외에는 권장하지 않습니다.

     

    사실, 단일 서버에서 가장 빠른 캐시 방법은 파일캐시도 아니고 memcache도 아니고 apcu입니다^^

  • profile ?
    아 현재 VPS로 서버를 조물딱 조물딱 할 수 있습니다. apcu는 현재 php7.2에서도 호환되는 캐싱방식인가요?
    어차피 opcache는 php에 내장되어 기본 활성화 된 캐시이니까, apcu만 추가로 설치하면 되겠군요...
  • ? profile
    네, PHP 7.x 버전에 apcu 5.x 이상 버전을 설치하시면 됩니다. 그러나 기존의 apc와 함수명이 달라져서, 라이믹스에서 인식되도록 하려면 apcu-bc 패키지를 추가로 설치해야 할 수도 있습니다.
  • profile ?
    apcu 패키지와 apcu-bc 패키지를 설치 후, php FPM을 리스타트해서 로드 해 주었습니다. 라이믹스 고급 설정에서 apc 캐시를 추가로 설정하게 활성화 되었는데, 이 옵션을 선택하면 유저 변수 캐시는 apcu가 담당하고 php 코드 캐시는 opcache가 담당하게 되는건가요?
  • ? profile
    네, 맞습니다.