Server

PHP Opcache 속도개선 시키기

by Progress posted Mar 07, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

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