application:apache:mpm
Apache MPM(Multi-Processing Module)
Apache MPM 정의
Apache Multi-Processing Module
Apache 가 요청을 처리하기 위해서 Child Process에게 분배하는 방식을 이야기 한다.
Prefork / Worker
여러가지 종류의 MPM 이 존재하나, 가장 많이 사용하는 방식이 Prefork 와 Worker 이다.
전통적인 방식은 prefork 방식이면, 최근에서는 성능에 주안점을 둔 worker 방식을 선호한다.
| Prefork | Worker |
동작 | 실행중인 프로세스를 복제하여 실행
(메모리 영역까지 함께 복제)
프로세스가 소비하는 메모리가 많음 | 요청을 Thread 단위로 처리
(최대 64의 Thread 처리 가능) |
차이점 | 안전하지 않은 제3가 만든 모듈 사용가능
디버깅이 빈약한 플랫폼에서 쉬운 디버깅 가능 | Prefork에 비해 적은 메모리 사용
통신량이 많은 서버에 적절한 형태 |
MaxClients | 최대 256까지 변경가능 | |
MaxClients 늘리기
Prefork
apache 1.x
apache 소스 디렉토리의 src/include/httpd.h 파일에서 HARD_SERVER_LIMIT 256 값을 수정하고 컴파일한다.
define HARD_SERVER_LIMIT 1024
apache 2.x
apache 소스 디렉토리의 server/mpm/prefork/prefork.c 파일에서 DEFAULT_SERVER_LIMIT 256 값을 수정하고 컴파일한다.
define DEFAULT_SERVER_LIMIT 1024
Worker
apache 2.x 버젼에만 존재한다.
MaxClients 는 StartServers 와 ThreadsPerChild 의 곱에 의해서 결정된다.
MaxClients = StartServer * ThreadsPerChild
worker 방식은 각각의 Child Process별로 여러개의 thread 를 생성하여 요청을 처리하기 때문이다.
Maxclient를 늘리기 위한 설정
apache 소스 디렉토리의 server/mpm/worker/worker.c 파일에서 DEFAULT_SERVER_LIMIT 16 값을 수정하고 컴파일한다.
application/apache/mpm.txt · 마지막으로 수정됨: 2009/07/31 08:59 저자 starlits