티스토리 뷰
MPM : Multi-Processing Modules, MPMs (다중 처리 모듈)
- 여러 방식이 존재하지만, 대표적으로 Prefork 와 Worker 방식을 많이 사용함.
Prefork
- 쓰레드가 한개의 자식 프로세스를 여러개 사용하며 각 프로세스는 한번에 한 연결을 담당
- worker보다 좀 더 많은 메모리를 사용함
- 프로세스간 메모리를 직접 공유하지 않으므로, 메모리 공간이 독립적이어서 안정적임
설정 예
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
옵션 설명
StartServer
아파치 구동시에 자식 프로세스 개수 지정
MinSpareServers, MaxSpareServers
부하가 적어서 MinSpareServers 개수 보다 적었을 경우 최소한 이 개수 만큼 유지하려고 아파치가 노력하고
부하가 증가하여 프로세스 개수가 많아질 경우에 MaxSpareServers 개수 이하로 줄이려고 아파치는 노력한다.
즉, 절대적인 수치가 아니다.
MaxClient
초기 시작시 실행가능한 최대 아파치 자식 프로세스의 개수를 지정
*worker방식의 MaxClient 와는 전혀 다른 의미임.
MaxReqeustPerChild
클라이언트들의 요청 개수를 제한. 만약 자식 프로세스가 이 값만큼의 클라이언트 요청을 받았다면 이 자식 프로세스는 자동으로 죽게 된다. 0 일 경우엔 무한대
Worker
- 자식 프로세스들이 각각 여러 쓰레드를 사용하며, 각 쓰레드는 한번에 한 연결을 담당
- Prefork보다 메모리 사용량이 적음. 통신량이 많은 서버에 적절
- 쓰레드 간에 메모리 공간을 공유함. 리소스 경합이 발생하지 않도록 주의 필요.
설정 예
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
옵션 설명
StartServers
시작시에 생성되는 서버 프로세스의 개수
MaxClient
동시 연결가능한 클라이언트의 최대 개수.
MinSpareThreads
최소 thread 개수
MaxSpareThreads
최대 thread개수
ThreadPerChild
개별 자식 프로세스가 지속적으로 가질 수 있는 Thread의 개수
MaxRequestPerChild
자식 프로세스가 서비스할 수 있는 최대 요청 개수
* 확장성이 필요한 사이트는 worker방식을 택하고, 안정성과 오래된 소프트웨어와 호환성이 필요한 사이트는 Prefork를 사용하기도 한다.
* Linux의 경우, Prefork 방식이 Default이며, Worker방식을 사용하기 위해서는 설치시에 -with-mpm=worker 옵션을 주어야 한다.
ex) ./configure --prefix=/home/paint/apache-2.2.15 --enable-mods-shared=all --enable-module=so --enable-so --with-mpm=worker
'WEB,WAS > Web Server' 카테고리의 다른 글
[Apache] ServerTokens (보안) (0) | 2010.10.12 |
---|---|
[Apache] Log Level (0) | 2010.10.12 |
[Apache] WEB-INF 디렉토리 보안 설정 (0) | 2010.10.12 |
Apache Worker 방식의 이해 및 설정법 (5) | 2010.10.12 |
[Apache] Virtualhost 설정 (0) | 2010.10.08 |
Apache log에 favicon.ico 출력 안되게 하기 (0) | 2010.10.05 |
Apache Accesslog에서 특정 IP는 로그에 안남기기 (0) | 2010.10.04 |
[Apache] (MPM) Perfork / worker (0) | 2010.07.17 |
- Total
- Today
- Yesterday
- DevOps
- Docker
- 데브옵스
- Password manager
- rundeck
- Thread Dump
- groovy
- JVM
- 플레이북
- Linux
- Shell Script
- iTerm2
- PostgreSQL
- Ansible
- openssl
- 리눅스
- nginx
- 젠킨스
- vagrant
- 엔시블
- URL Encoding
- 쓰레드덤프
- Nexus
- 파이프라인
- 엔서블
- Playbook
- rsync
- ssl
- Config History
- Jenkins
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |