Apache MPM 방식 Prefork / Worker

리눅스/APACHE|2015. 1. 16. 16:45
반응형

원문 : http://www.camelrichard.org/apache-prefork-vs-worker
참고 : http://dakrink.tistory.com/45


Prefork는 일반적으로 Single CPU 또는 Dual CPU에서 성능이 좋고 Worker는 일반적으로 멀티 CPU 시스템에서 성능이 좋다.

 

Prefork
<IfModule mpm_prefork_module>
      StartServers                   5
      MinSpareServers            5
      MaxSpareServers          10
      MaxClients                  150
      MaxRequestsPerChild     0
 </IfModule>


Worker
<IfModule mpm_worker_module>
       StartServers                 2
       MaxClients               150
       MinSpareThreads       25
       MaxSpareThreads      75
       ThreadsPerChild         25
       MaxRequestsPerChild   0
</IfModule>

 


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

 

종류 : 여러가지 종류가 있으나 대표적인 prefork 방식과 Worker 방식만 소개 하겠습니다.

 

Prefork 
실행중인 프로세스 복제하여 실행 ( 메모리 영역까지 같이 복제) 
프로세스가 소비하는 메모리가 많음. 
응답프로세스를 미리 띄워놓고 클라이언트 요청시 자식 프로세스가 반응하게 되는 방식.

 

prefork MPM ( --with-mpm=profork) 컴파일
Prefork 방식은 일반적으로 single CPU 또는 Dual CPU에서 성능이 좋고


Worker 
worker MPM ( --with-mpm=worker) 컴파일
Worker 방식은 일반적으로 멀티 CPU 시스템에서 성능이 좋다.
요청을 thread 단위로 처리 ( 최대 64개의 thread 처리 가능 ) 
지정된 만큼의 프로세스와 각 스레드를 준비하여 클라이언트의 요청을 받아들이는 설정


Prefork 방식과 Worker 방식의 차이점 
(1)  Worker가 Prefork에 비해 적은 메모리 사용한다. 
(2)  Worker : 통신량이 많은 서버에 적절한 형태를 가진다.
(3)  Prefork : 안전하지 않은 제 3자가 만든 모듈을 사용할 수 있다. 
(4)  Prefork : 디버깅이 빈약한 플랫폼에서 쉽게 디버깅 할 수 있다.
(5)  ‘Worker‘ 와 ‘Prefork‘ 의 속도는 비슷하다.
(6)  apache MaxClient : Prefork 방식일 경우 최대 256 까지 변경 가능하다.

 

 

prefork 의 구동 방식은 child 프로세스를 똑같이 복사하면서 access를 처리하여, 이로인해 메모리도 똑같이 복사하게 되며 당연히 메모리를 많이 소비합니다.

 

이러한 단점을 극복하고자 나온게 httpd-2x.x 부터는 mpm 중에서 worker 가 추가되어 나왔으며, 모든 access 를 하나의 쓰레드로 처리하여, 결론적으로 메모리 소비에는 어느 정도 효과가 있으나, 하나의 쓰레드가 문제가 생기면 해당 쓰레드에 access 중인 모든 프로세스에 문제가 발생됩니다.

 

결론적으로 복제된 프로세스만 영향을 받는 prefork 에 비해서 굉장히 불안해 집니다.

 

대안으로 하나의 쓰레드가 처리하는 access 프로세스를 64개로 기본적으로 제한하고, 또는 수정할 수 있게되어 있으나, 이 부분도 더 개선이 되어야겠습니다.

 

[출처] SYSTEM Engineer 깽애니네 (리눅스, 윈도우, 보안, DDOS, 네트워크, 프로그래밍) - http://mojily.pe.kr/bbs/board.php?bo_table=B19&wr_id=91

 

반응형

댓글()