갈루아의 반서재

MPM(Multi-Processing Module)

apache 가 받아 들인 요청을 처리 하기 위해 'child processes'에게 분배하는 방식으로, Prefork MPM 과 Worker MPM 의 2가지 방식이 있다.


이 두가지의 차이점은 간단히 다음과 같다.

Prefork MPM 은 하나의 쓰레드를 가진 다수의 child process 를 사용한다. 그리고 각각의 프로세스가 하나의 커넥션을 담당한다. 이에 반해 Worker MPM 은 다수의 쓰레드를 지닌 다수의 child processes 를 사용하며, 각각의 쓰레드가 하나의 커넥션을 핸들링한다. 대부분의 시스템에서는 prefor 방식이 좀 더 많은 메모리를 사용한다.

트래픽이 많은 웹사이트의 경우, 메모리 사용량 면에서 worker 방식이 유리하므로 선호되는 측면이 있다.

하지만 prefor 방식은 안전성이 확인되지 않은 라이브러리 사용시 더 안전하다는 장점이 있다. 

예를 들면, mod_php(not thread safe)와 ​같은 모듈의 경우 worker MPM 방식에서는 사용할 수 없지만 prefork MPM 방식에서는 사용이 가능하다.

따라서 만약 여러분이 thread safe 라이브러리만 쓰겠다고 하면 당연히 worker 방식으로 가야하며, 그것에 대해 확신이 없는 경우에는 기본적으로 prefork 방식을 쓰면 된다. 단 이경우 트래픽에 대비해서 RAM 용량 조정 등이 필요할 수는 있을 것이다.

현재 설치되어 있는 아파치의 버전은 다음과 같이 확인합니다.

[root@www ~]# /opt/httpd/bin/httpd -v
Server version: Apache/2.0.55
Server built:   Nov 25 2014 18:36:12

 

 

 


httpd -l 명령을 통해 아래와 같이 현재 운영중인 아파치가 prefork MPM 와 worker MPM 중 어떤 방식으로 설치되었는지 확인가능합니다.