PHP Opcache 속도개선 시키기
Opcache 사용시 가장 주의해야할 부분은 아래 값입니다.
opcache.revalidate_freq (default "2")
이 항목은 php 소스 파일이 변경되었는지 검사하는 간격으로 기본 2초입니다.
따라서 소스가 자주 변경되는 개발서버에서는 매번 검사하도록 0으로 두시고, opcache.revalidate_freq=0
소스가 자주 변경되지 않는 일반 중소규모에서는 기본값 2초가 무난하고,
빌드 및 배포가 자동화된 중대형 서버에서는 성능을 위한 권장값인 60초도 좋아보입니다. (배포후 웹서버 재시작 필요) opcache.revalidate_freq=60
XE처럼 file cache 가 기본인 경우에는 2초로 두더라도, 지연 문제가 생길 수 있겠네요. ex) xe/files/cache/template_compiled/1c43b1d5d8ee3b952577bd1b3eef4937.compiled.php
이 경우 0으로 설정 |
[opcache]
; Zend OPCache 활성화 여부 결정.
opcache.enable=1
; PHP CLI 버전에서 Zend OPCache 활성화 여부 결정.
opcache.enable_cli=0
; OPCache 공유 메모리 저장소 사이즈
;개인적으로 256으로 변경함
opcache.memory_consumption=64
; 메모리에서 interned 문자열을 위해 사용할 메모리량
; interned string 에 대해서는 https://wiki.php.net/rfc/performanceimprovements 참조.
opcache.interned_strings_buffer=4
; OPCache 해쉬 테이블에서 가질수 있는 키값의 최대 값.
; 이는 200 ~ 100000 사이에 값만 가질 수 있다.
opcache.max_accelerated_files=4000
; 재시작이 스케줄 될때까지 "wasted" 최대 메모리 비율(percentage)
opcache.max_wasted_percentage=5
; 이 값을 활성화 하면, OPCache 는 현재 작업디렉토리를 스크립트 키에 추가하고,
; 같은 이름(basename) 을 가진 파일들사이에 가능한 충돌을 제거하게 된다.
; 이 값을 비활성화하면 성능이 향상되지만, 존재하는 애플리케이션이 깨질 수 있다.
;opcache.use_cwd=1
; 이것을 비활성화하면, OPCache 를 수동으로 리셋해주거나
; 파일시스템이 변한것에대해 효과를 얻기위해서는 웹서버를 재시작 해줘야만 한다.
opcache.validate_timestamps=1
; 공유 메모리 저장소 할당을 위해서 변화된 것들에 대해 얼마나 자주 파일 타임스템프
; 를 체크(초단위)할지를 정한다. ("1" means validate once per second, but only once per request. "0" 은 늘 유효성 검사를 한다.)
; XE 사용자는 0이 맞단다. 글쓰고 난 후 클릭해도 바로 안나오는 오류가 발생됨.
opcache.revalidate_freq=1
; include_path 최적화에서 파일 서치(search)를 할지 말지 결정.
opcache.revalidate_path=1
; 이것을 비활성화 할 경우, 모든 PHPDoc 코멘트는 최적화 코드 사이즈를 줄이기 위해서
; 코드로부터 삭제된다.
opcache.save_comments=0
; 이것을 비활성화 할 경우, PHPDoc 코멘트는 SHM 으로부터 로드되지 않으며, 그래서 "Doc Comments"는
; 늘 저장될 수 있다(svae_comments=1), but not loaded by applications that don't need them anyway.
opcache.load_comments=0
; 이것을 활성화하면 fast shutdown 시퀀스는 accelerated code에 대해 사용되어진다.
opcache.fast_shutdown=0
; 성능문제로 file existence 오버라이드를 허용한다.
opcache.enable_file_override=0
; A bitmask, where each bit enables or disables the appropriate OPcache
; passes
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
; OPCache 블랙리스트 파일의 위치(와일드카드 허용됨).
; 각 OPCache 블랙리스트 파일은 accelerate 가 필요없는 파일 이름을 가진 텍스트 파일이다.
; 파일 포멧은 새로운 라인에 파일 이름을 각각 추가하는 것이다.
; 파일이름은 풀 패스이거나 파일의 prefix 일 수 있다. 예를들어
; /var/www/x 블랙리스트는 /var/www 에서 'x'로 시작하는 모든 디렉토리 혹은 파일이다.
; 라인의 시작이 ; 라면 무신된다(코멘트).
;opcache.blacklist_filename=
; 캐쉬할 파일중에 큰 파일을 제외를 허용한다. 기본으로는 모든 파일을 캐쉬.
;opcache.max_file_size=0
; N 요청마다 캐쉬 체크섬을 체크.
; 기본값으로 "0" 은 체크를 비활성화함.
opcache.consistency_checks=200
; 만일 캐쉬가 접근할 수 없게 되었을때에 시작을 위한 재시작 스케줄에 대해 얼마나 기달릴건지 결정.
;opcache.force_restart_timeout=180
; OPCache error_log 파일명. 빈문자열은 "stderr" 가 된다.
opcache.error_log= /tmp/OPCache_error.log
; 모든 OPCache 에러들은 웹서버 로그로 간다.
; 기본적으로, 오직 Fatal 에러들 (level 0) 혹은 level 1 에러들이 로깅된다.
; 여러분은 추가로 warnings (level 2), info messages (level 3) 혹은 debug message (level 4) 를 활성화 할수 있다.
;opcache.log_verbosity_level=1
; Preferred Shared Memory back-end. Leave empty and let the system decide.
;opcache.preferred_memory_model=
; 스크립트가 실행중에 애기치않은 쓰기로부터 공유메모리를 보호한다.
; 이는 오직 내부 디버그용으로만 유용하다.
;opcache.protect_memory=0