Apache MPM & Maxclient

apache MPM이란?
MPM(Multi-Processing Module) 다중 처리 모듈
apached 가 받아들인 요청을 처리하기 위해 자식 process에게 분배하는 방식

 

Prefork 방식
자식 프로세스를 늘려 처리
자식프로세스 <—> 스레드
자식프로세스 <—> 스레드
자식프로세스 <—> 스레드

 

Worker 방식
요청을 스레드 단위로 처리(최대 64개 가능)
<—스레드 (1)

자식프로세스
<—스레드 (2)
<—스레드 (3)

 

설치
컴파일(./configre) 시 옵션을 넣어주지 않으면 preforker 방식으로 설치됨
prefork 컴파일 : –with-mpm=prefork
worker 컴파일 : –with-mpm=worker

 

prefork VS worker
CPU 성능이 좋다면 데이타 처리가 빠른 worker 방식을 많이 선호 하지만, worker 방식을 사용했을 시 하나의 스레드라도 고장이 났을 때 전체 스레드에 영향을 줄 수 있으므로 불안정함, 그래서 보통은 prefork 방식을 권장한다. 그리고 실제 속도 차이는 거의 없다고 한다.
성능비교 URL : http://blog.naver.com/saint7710?Redirect=Log&logNo=10072413095

 

MaxClient

  • Step.1 : 자신의 MPM 방식 확인

[root@theingka ~]# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Apr 3 2014 23:56:16
Server’s Module Magic Number: 20051115:25
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork

  • Step.2 : Maxclient 설정 변경

<IfModule mpm_prefork_module>
StartServers 8 => 아파치 구동시에 자식 프로세스 개수 지정
MinSpareServers 5 => 부하가 적어서 MinSpareServers 개수 보다 적었을 경우 최소한 이 개수 만큼 유지하려고 아파치가 노력하고
MaxSpareServers 20 부하가 증가하여 프로세스 개수가 많아질 경우에 MaxSpareServers 개수 이하로 줄이려고 아파치는 노력한다.
MaxClients 256 => 초기 시작시 실행가능한 최대 아파치 자식 프로세스의 개수를 지정 ( *worker방식의 MaxClient 와는 전혀 다른 의미임. )
MaxRequestsPerChild 4000 => 클라이언트들의 요청 개수를 제한. 만약 자식 프로세스가 이 값만큼의 클라이언트 요청을 받았다면 이 자식 프로세스는
자동으로 죽게 된다. 0 일 경우엔 무한대
</IfModule>

참조 URL : http://mcpaint.tistory.com/151

  • woker 방식

<IfModule mpm_worker_module>
ServerLimit 16 => 구성가능한 child 프로세스의 재한 수
StartServers 16 => 시작시에 초기화되는 서버 프로세스의 개수 (default : 3) / prefork default:5, mpmt_os2 default 2
MaxClients 150 => 동시에 접속할 수 있는 Client의 상한, 즉 Precess 수 x Thread 수
MinSpareThreads 25 => 새로운 방문자를 바로 처리하기 위하여 대기하고 있는 최소 쓰레드 개수
MaxSpareThreads 75 => 새로운 방문자를 바로 처리하기 위하여 대기하고 있는 최대 쓰레드 개수(보통 ThreadsPerChild 값이랑 같게 설정)
ThreadsPerChild 25 => 프로세스당 쓰레드 수(ThreadLimit와 거의 같은 의미)
MaxRequestsPerChild 0 => 자식프로세스가 서비스할 수 있는 최대 요청 개수(0은 무한대),
오래된 프로세스들을 죽이고 새로운 프로세스를 시작하는 것에 의해 프로세스 리사이클 주기를 얼마나 할지 설정
</IfModule>

참조 URL : http://mcpaint.tistory.com/152

더 많은 내용은 http://blog.naver.com/noorol/140199393519