Apache

Apache 2 prefork 와 worker 차이

by 루아틱 posted Jun 26, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

+ - Up Down Comment Print
Extra Form

요즘 메모리 적게 먹는다며 엔진엑스(nginx)쓰시는 분들이 많아지고 있죠. .. 전 아파치를 쓰다 엔진엑스를 쓰려니..

당최.. 어려움을 격다 포기했습니다. 훔.. 그렇다고 남에게 설명할 실력도 안되는데 몇가지 적어봅니다.


보통 아파치를 사용하시는 분들의 경우 Prefork 모드를 이용하여 설치를 많이 하십니다. 우분투의 경우도 11.10까지

apt-get 로 설치를 하게되면 이방식으로 설치되어 오다 12.04 부터 worker가 기본으로 변경되었습니다.


이 방식들을 Apache(아파치)에서 이 방식들을 뭐라 하느냐! 바로 MPM이라 합니다.

MPM -> Multi Processing Module 로 다중 처리 모듈이란 말이구요 리눅스에서 보면 부모 프로세스 , 자식 프로세스

라는 말이 있습니다. 즉 아파치 웹 서버가 받아들이는 요청을 처리하기 위해 자식 프로세스에게 분배하는 방식입니다.

자신의 웹서버 방식 확인은 httpd -v 해보시면 버전과 함께 사용된 모듈파일들이 나오는데 prefock.c 가 있다면 prefo

ck이고 worker.c가 있다면 worker입니다.


Prefork

실행중인 프로세스를 메모리 영역까지 복제하여 실행합니다. 프로세스가 소비하는 메모리가 많습니다. 이것 때문에

사람들이 엔진엑스보다 아파치가 메모리를 많이 먹는다 라고들 합니다. 

메모리는 많이 먹는 대신 응답 프로세스를 미리 띄어 놓고 클라이언트가 요청을 하면 자식 프로세스가 반응하게 됩

니다.


Worker

일반적으로 멀티 CPU인 서버에서의 성능이 뛰어납니다. 요즈음 쿼드 코어다 헥사코어다 해서 CPU들의 코어가 2개

이상인 시스템이 많죠 요청을 쓰레드(thread) 단위로 처리하며 최대 64개의 쓰레드로 할 수 있습니다.

지정된 만큼의 프로세스와 각 쓰레드를 준비하여 클라이언트의 요청을 받아 들이는 방식입니다. 대신 Prefork보다

아주 적은 메모리를 사용하게 됩니다. 


두 방식의 속도 차이는 없습니다. Worker이 Prefork에 비해 불안정적이다 라고 말하시는 분들도 재법 보았습니다.

국내에서는 대부분의 개인서버 또는 분들이 Prefork를 많이들 사용하십니다. 그런데 외국에서는 Prefork보다 Worker

을 더 많이 사용하는 추세입니다. 그리고 우분투 12.04의 경우도 기본 패키지 설치방식이 worker로 변경되었습니다.


훔.. 아파치를 고수하시는 분들에게는 한번 시도해봄직한 방식인데요 저도 제가 관리중인 서버들은 모두 worker로

운영하고 있습니다. 다들 불안정하다라고들 하시는데 뭐가 불안전한지는 모르겠네요^^;


똑같은 내용으로 xe공홈에 올렸습니다 :)