OPCache :: Increase WordPress, NextCloud Performance

워드프레스나 NextCloud는 PHP 기반으로 돌아가게 되는데, NextCloud 12 Server Tuning 글에 보면 Enable PHP OpCache 란 섹션이 있다.

나머지 http2, MariaDB 사용 까지는 ‘제로부터 시작하는 NextCloud 설치하기‘  에 있고,  Redis-based Transactional File Locking 도 적용되어 있다. (나중에 기회되면 설명하려고 한다.)

그래서 남은 항목인 OPCache 에 대해 정리하려고 한다.

OPCache란?

OPcache는 PHP script 를 bytecode로 컴파일한 후에 공유 메모리에 저장하여 성능을 향상시키는 모듈이다.
5.5 이상부터 PHP에 내장되어 있는데, 설정 방법은 php.ini 파일을 열어서 아래 구문들을 추가해주면 된다.

경로는 /etc/php/7.0/fpm/php.ini이다.

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

각각 구문에 대한 설명은 아래와 같다.

  • enable : OPCache 활성화 여부
  • enable_cli : CLI 버전의 PHP에서 OPCache 활성화 여부
  • interned_strings_buffer : 내부 문자열을 저장할 때 사용되는 메모리 양(MB), PHP 5.3.0 이상만 적용됨
  • max_accelerated_files : OPCache 해시 테이블의 최대 키 수 (= 스크립트 수)를 적는다. 사용되는 실제 값은 리스트 (223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987) 에서 설정한 값과 같거나 큰 수 중 첫번째 숫자가 된다. 최소는 200이고, 최대는 PHP 5.5.6 미만에서는 100,000 이고, 그 이상은 1.000.000 이다.
  • memory_consumption : OPCache 가 사용하는 공유 메모리 저장 영역의 크기 (MB)
  • save_comments: false면 모든 주석이 opcache 캐시에서 삭제되어 Doctrine, Zend Framework 2 와 같은 주석 구문에 의존하는 기능이 작동하지 않음
  • revalidate_freq: 타임스탬프 기준에서 어느 시간을 기점으로 업데이트 할건지 결정함

적용 후 서비스 재적용을 해준다.

sudo systemctl restart php7.0-fpm.service