Server

아파치 캐시 설정 이후 잦은 아파치 자동멈춤 현상 원인분석

by Progress posted Mar 23, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

아파치 캐시 설정 이후 잦은 아파치 자동멈춤 현상이 발생되어 원인분석을 해봐야 겠다.

우선 php.ini 의 OPCACHE 캐시설정

;extension=php_opcache.dll
zend_extension=php_opcache.dll


; Zend OPCache 활성화 여부 결정. 
opcache.enable=1 
  
; PHP CLI 버전에서 Zend OPCache 활성화 여부 결정. 
opcache.enable_cli=0 
  
; OPCache 공유 메모리 저장소 사이즈 
;원본 : opcache.memory_consumption=64 
opcache.memory_consumption=128
  
; 메모리에서 interned 문자열을 위해 사용할 메모리량 
; interned string 에 대해서는 https://wiki.php.net/rfc/performanceimprovements 참조. 
;opcache.interned_strings_buffer=4 
opcache.interned_strings_buffer=4
  
; OPCache 해쉬 테이블에서 가질수 있는 키값의 최대 값. 
; 이는 200 ~ 100000 사이에 값만 가질 수 있다. 
opcache.max_accelerated_files=2000 
  
; 재시작이 스케줄 될때까지 "wasted" 최대 메모리 비율(percentage) 
opcache.max_wasted_percentage=1 
  
; 이 값을 활성화 하면, 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=10
  
; include_path 최적화에서 파일 서치(search)를 할지 말지 결정. 
opcache.revalidate_path=1 
  
; 이것을 비활성화 할 경우, 모든 PHPDoc 코멘트는 최적화 코드 사이즈를 줄이기 위해서 
; 코드로부터 삭제된다. 
opcache.save_comments=0 

 

httpd.conf

# gzip 대신 쓰는 압축
LoadModule deflate_module modules/mod_deflate.so

# 브라우저 캐시관련
LoadModule expires_module modules/mod_expires.so

#디스크캐시 일단 다시 비활성
LoadModule cache_disk_module modules/mod_cache_disk.so

# 2016년 3월 22일 갑자기 0으로 변경했다. 또 뻣을까?

# MaxRequestsPerChild  5000 초기값
MaxRequestsPerChild  0 #수정함.

 

 

mpm.conf

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#   스타트서버 * 맥스퍼차일드 = 500 총접속쓰레드
<IfModule mpm_event_module>
    StartServers             5
    MinSpareThreads         20
    MaxSpareThreads        200
    ThreadsPerChild        100
    MaxRequestWorkers      300
    MaxConnectionsPerChild   0
</IfModule>

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxConnectionsPerChild: maximum number of connections a server process serves
<IfModule mpm_winnt_module>

#    ThreadLimit             500
    ThreadsPerChild         500
    MaxConnectionsPerChild 50000
</IfModule>
 

수정해 봤는데 또 멈출까?