Apache MPM 방식 Prefork / Worker
원문 : 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
'리눅스 > APACHE' 카테고리의 다른 글
홈페이지 한글 깨짐(다이아몬드 모양) 현상 해결 (0) | 2015.01.16 |
---|---|
JAVA 파일 (J2SE) 다운로드 바로 하기 (0) | 2015.01.16 |
다수 웹서버에서 PHP 세션 공유 (0) | 2015.01.16 |
웹서버 스트레스 테스트 (0) | 2015.01.16 |
mod_rewrite 를 이용한 주소 단축 (0) | 2015.01.16 |