Zend OPcache 설치 및 설정



개요

OPcache는 PHP script 를 bytecode로 컴파일한 후에 공유 메모리에 저장하여 성능을 향상시키는 모듈이다.

Opcache 의 구현물은 다양하지만 Zend Opcache 는 PHP 5.5 에 기본 모듈로 내장되었고 지속적으로 개발되고 있는 프로젝트이므로 이것을 사용하는 것이 좋을 것 같다.


설치

Windows

  1. http://windows.php.net/downloads/pecl/releases/opcache/ 에서 미리 컴파일된 라이브러리를 다운받는다.
    1. 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
  2. 압축을 풀고 php_opcache.dll  를 PHP 설치 폴더내 ext 에 복사한다.
  3. C:\windows\php.ini 에 다음 내용을 추가한다.

    Windows 에서는 extension_dir = "ext" 항목이 설정되어 있어야 제대로 로딩할 수 있다.
    zend_extension=D:\devel\php-5.4.35-Win32-VC9-x86\ext\php_opcache.dll
  4. httpd 재구동



RHEL/CentOS

  1. RHEL/CentOS 5,6 에 EPEL 과 Remi/WebTatic Repository 설치하기 참고하여  WebTatic 저장소 설치
  2. yum 으로 설치

    PHP 5.4
    yum install php54w-pecl-zendopcache
    PHP 5.5
    yum install php55w-opcache
  3. /etc/php.ini 에 추가

    zend_extension=php_opcache.dll
  4. 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 

Zend OpCache GUI 관리툴 설치 참고

Ref