Apache Multi-Processing Modules(MPM, 다중처리모듈)의 Worker 방식
Apache Multi-Processing Modules(MPM, 다중처리모듈)의 Worker 방식
o 정의
- 자식 프로세스가 여러 개의 스레드를 갖는 구조.
- 하나의 스레드는 하나의 연결을 담당.
- prefork 방식에 비해 메모리 사용량이 적음.
- 스레드 간에 메모리를 공유함. 리소스 경합이 발생하지 않도록 주의 필요.
- 통신량이 많은 서버에 적절. 특히 PHP를 쓰는 경우 유의.
o 설정 및 지시어 설명
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
- StartServers : 아파치 서버 기동 시 프로세스의 수
- MaxClient :
. 동시에 처리될 최대 connection(request)의 수
. MaxClients 수치를 초과한 후 온 요청들은 ListenBackLog에 의해 큐잉
. ThreadsPerChild 옵션과 매우 긴밀하게 작용
. 동접자가 많을 경우,이 MaxClient값을 상향적용
. OS의 FD(File Descriptor)값을 증가 시켜 MaxClient의 상한 값을 증가
- MinSpareThreads : 최소 thread개수 (idle 스레드가 MinSpareThreads 보다 커질때까지 생성)
- MaxSpareThreads : 최대 스레드 수 (idle 스레드가 MaxSpareThreads 보다 작아질 때까지 감소)
- ThreadPerChild : 자식 프로세스가 지속적으로 가질 수 있는 스레드 수
- MaxRequestPerChild : 자식 프로세스가 서비스할 수 있는 최대 요청 수
o 참고
Maxclient 를 늘리기 위한 설정 ( Worker방식일 경우 - 2.x버전에 한정됨)
1) MaxClient = StartServer * ThreadsPerChild
2) Maxclient 를 늘리기 위한 설정
apache소스디렉토리/server/mpm/worker/worker.c파일 을 수정
define DEFAULT_SERVER_LIMIT 16 값을 상향조정
by. 현주희 (8월)