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 · 마지막으로 수정됨: 저자 starlits
