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 중 어떤 방식으로 설치되었는지 확인가능합니다.
'프로그래밍 Programming' 카테고리의 다른 글
numpy - Arrays (8) (ArrayArray item selection and manipulation) (0) | 2015.04.11 |
---|---|
numpy - Arrays (7) (Comparison operators and value testing) (0) | 2015.04.11 |
아파치 동시 접속자수 확인하기 Get the number of concurrent users in Apache (0) | 2015.03.10 |
numpy - Arrays (4) (Array iteration) (0) | 2015.03.08 |
python print x IndentationError (0) | 2015.03.08 |