Zend OPcache 설치 및 설정
개요
OPcache는 PHP script 를 bytecode로 컴파일한 후에 공유 메모리에 저장하여 성능을 향상시키는 모듈이다.
Opcache 의 구현물은 다양하지만 Zend Opcache 는 PHP 5.5 에 기본 모듈로 내장되었고 지속적으로 개발되고 있는 프로젝트이므로 이것을 사용하는 것이 좋을 것 같다.
설치
Windows
- http://windows.php.net/downloads/pecl/releases/opcache/ 에서 미리 컴파일된 라이브러리를 다운받는다.
- PHP 5.4 용 Thread safety 버전 - http://windows.php.net/downloads/pecl/releases/opcache/7.0.4/php_opcache-7.0.4-5.4-ts-vc9-x86.zip
- 압축을 풀고 php_opcache.dll 를 PHP 설치 폴더내 ext 에 복사한다.
C:\windows\php.ini 에 다음 내용을 추가한다.
Windows 에서는 extension_dir = "ext" 항목이 설정되어 있어야 제대로 로딩할 수 있다.
zend_extension=D:\devel\php-5.4.35-Win32-VC9-x86\ext\php_opcache.dll
- httpd 재구동
RHEL/CentOS
- RHEL/CentOS 5,6 에 EPEL 과 Remi/WebTatic Repository 설치하기 참고하여 WebTatic 저장소 설치
yum 으로 설치
PHP 5.4yum install php54w-pecl-zendopcache
PHP 5.5yum install php55w-opcache
/etc/php.ini 에 추가
zend_extension=php_opcache.dll
- httpd 재구동
설정
php.ini 에 다음 설정 내용 추가 (http://stackoverflow.com/questions/17224798/how-to-use-php-opcache)
RHEL/CentOS 은 opcache 패키지 설치시 /etc/php.d/opcache.ini 파일에 기본 설정이 들어있으므로 이 파일을 수정해야 한다.
[opcache] opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.validate_timestamps=on opcache.revalidate_freq=0 opcache.fast_shutdown=1 opcache.enable_cli=1
opcache.memory_consumption - 캐쉬에 사용할 메모리 크기. 기본 설정은 64M.
opcache.interned_strings_buffer - Opcache 가 사용하는 내부 스트링( class name 이나 file등)을 저장하기 위한 메모리의 크기.
opcache.max_accelerated_files - Opcache 가 캐슁할 최대 파일 갯수.
opcache.validate_timestamps - 0(off)이 아닐 경우 opcache.revalidate_freq 에 설정된 시간마다 코드와 캐쉬의 변경 여부를 체크한다. validate_timestamps 가 꺼져 있을 경우 코드의 변경 여부를 체크하지 않으므로 PHP 소스가 수정되어도 반영되지 않는다. 그러므로 변경 사항을 반영하려면 httpd 를 재기동하거나 httpd 에 SIGUSR2 시그널을 전송해야 한다.
killall -SIGUSR2 httpd
- opcache.revalidate_freq - 코드 캐쉬 만료 및 코드의 변경을 얼마나 자주 체크할 지 여부. 단위는 초(second)이며 0 일 경우 매번 체크하므로 속도가 느려지지만 바로 변경이 반영되므로 개발 환경일 때 유용하다. 운영 환경에서는 60 정도가 적당.
opcache.enable_cli - 명령행 버전의 PHP 에도 opcache 를 적용할 지 여부
설치후 phpinfo(); 를 실행하는 페이지를 호출하여 정상 설치 여부를 확인한다.
<?php phpinfo(); ?>
OpCache GUI
Ref
- http://halfelf.org/2013/trading-apc-for-zend/
- https://www.activecollab.com/blog/3-zend-opcache-memcached.html
- http://stackoverflow.com/questions/9611676/is-apc-compatible-with-php-5-4-or-php-5-5
- https://www.scalingphpbook.com/best-zend-opcache-settings-tuning-config/