티스토리 뷰

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

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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
글 보관함