1. mpm 종류

 

prefork, worker, event

Apache 2.4 이후로는 event가 Default가 되었으며, prefork 또는 worker로 하기 위해서는 apache 컴파일 시

-with-mpm=prefork 또는 -with-mpm=worker

옵션을 추가하면 됨

 

2. 장단점

 

(1)prefork

-장점: 요청 당 프로세스 생성, 사용자가 많지 않고 안정적 운영이 필요할 때 적절함

-단점: 프로세스가 비교적 메모리를 많이 차지

 

(2)worker

-장점: 프로세스가 스레드 생성하여 요청 수행, 사용자가 많으며 Flexibility 필요할 때 적절함

-단점: 스레드가 메모리를 공유하여, 서로 다른 스레드에 영향 줌(자원 독점 또는 오류 발생 시 영향 등)

 

(3)event

-장점: 요청과 Apache 요청 분리하여 분산 처리 가능

-단점: 성능이 아직 보장되지 않음

 

3. 세부 설정

 

(1)prefork

 

-startServers : 아파치 구동 시 첫 프로세스의 개수 (기본값 : prefork 5, worker 3)

-MinSpareServers : 부하가 아무리 적어도 최소 해당 값만큼의 프로세스는 유지하는 개수(부하가 적어 자식 프로세스 수가 해당 값보다 적어진 경우, 부모프로세스는 초당 1개씩 자식 프로세스를 해당 값까지 만들려고 노력한다.) (기본값 : 5)

-MaxSpareServers : 부하가 증가하여 프로세스 개수가 많아져도 해당 값만큼 프로세스를 유지하는 개수 (절대적 수치 아니며, 해당 값을 유지하려고 노력함)(기본값 : 10)

-MaxRequestsPerChild : 자식 프로세스가 해당 값만큼의 요청을 받았다면 이 자식 프로세스는 자동으로 죽게 됨. (0 으로 설정할 경우 무한대)(기본값 : 10000)

-MaxClients : 최대로 받아들일 동시 요청 개수 = 최대 자식 프로세스의 개수 (기본값 : 256)

 

-MaxClients 적정 값 계산 방법

-(총 메모리의 80% ? Apache가 사용하고 있는 메모리 크기 ? 시스템에 기본적으로 설치되어있는 agent 류의 프로그램이 사용하는 메모리 크기) / apache 프로세스 1개가 사용하고 있는 메모리

 

*Apache 사용 메모리

ps aux | grep httpd | awk '{print $6}' | awk '{total = total + $1} END {print total/1024}'

 

*Apache 프로세스 개수

ps aux | grep httpd | wc -l

 

*아파치 프로세스 1개의 사용 개수

Apache 사용 메모리 / Apache 프로세스 개수

 

MaxClients 계산 예제

*총 메모리 * 0.8 = 2048 * 0.8 = 1638.4

*Apache 사용 메모리: 102.355

*시스템 agent 사용 메모리 = 0

*Apache 프로세스 1개 사용 메모리 = 102.355 / 18 = 5.68

*MaxClients = (1638.4 - 102.355 - 0) / 5.68 = 270

+ Recent posts