Apache 웹 서버 MPM 구성 방법(Prefork, Worker)
Apache 웹 서버의 MPM(Multi-Processing Module)은 웹 서버가 처리할 수 있는 동시 연결 수와 이를 처리하는 방법을 결정합니다.
아파치 웹서버 MPM 중에는 prefork와 worker MPM이 있는데 각각의 속성과 설정 방법에 대해 알아보겠습니다.
기본 MPM
프리포크 MPM은 각 연결을 처리하기 위해 별도의 프로세스를 생성하는 방법입니다.
이 접근 방식은 안정적이고 예측 가능한 성능을 제공하지만 동시 연결 수가 적으면 성능이 저하됩니다.
이 때문에 prefork MPM은 PHP와 같은 스크립팅 언어를 사용하는 웹 사이트에서 일반적으로 사용됩니다.
Prefork MPM 설정 방법
1. Apache 구성 파일(httpd.conf 또는 apache2.conf)에서 MPM 모듈을 로드합니다.
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
2. Prefork MPM을 활성화합니다.
<IfModule mpm_prefork_module>
ServerLimit 10
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 10
MaxRequestsPerChild 0
</IfModule>
- ServerLimit: 생성할 최대 프로세스 수를 설정합니다.
- StartServers: 서버가 시작될 때 나타나야 하는 프로세스 수를 지정합니다.
- MinSpareServers: 유휴 프로세스 수를 설정합니다.
- MaxSpareServers: 유휴 프로세스 수가 이 값보다 크면 일부 프로세스를 종료합니다.
- MaxClients: 처리할 수 있는 최대 클라이언트 수를 설정합니다.
- MaxRequestsPerChild: 각 프로세스가 처리할 수 있는 최대 요청 수를 설정합니다.
무한대를 처리하려면 0으로 설정하십시오.
작업자 MPM
작업자 MPM은 스레드를 사용하여 여러 연결을 처리하는 방법입니다.
이 방법은 prefork MPM보다 적은 메모리를 사용하며 동시 연결 수가 많을 때 더 나은 성능을 제공합니다.
그러나 이 접근 방식은 스레드 안전 문제로 인해 신뢰성이 떨어질 수 있습니다.
이러한 이유로 Worker MPM은 정적 콘텐츠를 제공하는 웹 사이트에서 주로 사용됩니다.
작업자 MPM 설정 방법
1. Apache 구성 파일(httpd.conf 또는 apache2.conf)에서 MPM 모듈을 로드합니다.
LoadModule mpm_worker_module modules/mod_mpm_worker.so
2. 작업자 MPM을 활성화합니다.
<IfModule mpm_worker_module>
ServerLimit 10
StartServers 2
MaxClients 10
MinSpareThreads 2
MaxSpare
Threads 5
ThreadLimit 64
ThreadsPerChild 5
MaxRequestsPerChild 0
</IfModule>
- ServerLimit: 생성할 최대 프로세스 수를 설정합니다.
- StartServers: 서버가 시작될 때 나타나야 하는 프로세스 수를 지정합니다.
- MaxClients: 처리할 수 있는 최대 클라이언트 수를 설정합니다.
- MinSpareThreads: 유휴 스레드 수를 설정합니다.
- MaxSpareThreads: 유휴 스레드 수가 이 값보다 크면 일부 스레드를 종료합니다.
- 스레드: 프로세스당 생성할 최대 스레드 수를 설정합니다.
- ThreadLimit: 프로세스에서 생성할 수 있는 최대 스레드 수를 설정합니다.
- ThreadsPerChild: 프로세스당 생성할 스레드 수를 설정합니다.
- MaxRequestsPerChild: 각 프로세스가 처리할 수 있는 최대 요청 수를 설정합니다.
무한대를 처리하려면 0으로 설정하십시오.
졸업 증서
프리포크 MPM은 안정적이고 예측 가능한 성능을 제공하지만 동시 연결 수가 적으면 성능이 저하됩니다.
반면에 Worker MPM은 메모리를 덜 사용하고 동시 연결 수가 많을 때 더 나은 성능을 제공하지만 스레드 안전 문제로 인해 안정성이 떨어질 수 있습니다.
따라서 웹사이트의 특성에 따라 적절한 MPM을 선택하여 설정하는 것이 필요하다.
이 글은 MPM 설정 방법에 대해 간략하게 설명했으며, 자세한 내용은 공식 Apache 웹 서버 문서를 참조하세요.
MPM 설정(프리포크, 작업자).
- ~인 척하다
$ /usr/sbin/apachectl -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c.
$ ps -ef | grep httpd
root 25973 1 0 17:34 ? 00:00:00 /usr/sbin/httpd
nobody 25975 25973 0 17:34 ? 00:00:00 /usr/sbin/httpd
nobody 25976 25973 0 17:34 ? 00:00:00 /usr/sbin/httpd
nobody 25977 25973 0 17:34 ? 00:00:00 /usr/sbin/httpd
nobody 25978 25973 0 17:34 ? 00:00:00 /usr/sbin/httpd
nobody 25979 25973 0 17:34 ? 00:00:00 /usr/sbin/httpd
root 27527 27293 0 18:22 pts/0 00:00:00 grep --color=auto httpd
$ file /etc/sysconfig/httpd
/etc/sysconfig/httpd: ASCII English text
httpd 편집
- 주석 해제 HTTPD=/usr/sbin/httpd.worker
vi /etc/sysconfig/httpd
# Configuration file for the httpd service.
#
# The default processing model (MPM) is the process-based
# 'prefork' model. A thread-based model, 'worker', is also
# available, but does not work with some modules (such as PHP).
# The service must be stopped before changing this variable.
#
HTTPD=/usr/sbin/httpd.worker
#
# To pass additional options (for instance, -D definitions) to the
# httpd binary at startup, set OPTIONS here.
#
#OPTIONS=
$ service httpd stop
httpd 를 정지 중: ( OK )
$ service httpd start
httpd (을)를 시작 중: ( OK )
- 노동자
$ /usr/sbin/apachectl -l
Compiled in modules:
core.c
worker.c
http_core.c
mod_so.c
$ ps -ef | grep httpd
root 27793 1 0 18:26 ? 00:00:00 /usr/sbin/httpd.worker
nobody 27908 27793 0 18:26 ? 00:00:00 /usr/sbin/httpd.worker
root 27937 27293 0 18:26 pts/0 00:00:00 grep --color=auto httpd
$ ps -efL | grep httpd
root 27793 1 27793 0 1 18:26 ? 00:00:00 /usr/sbin/httpd.worker
nobody 27908 27793 27908 0 27 18:26 ? 00:00:00 /usr/sbin/httpd.worker
nobody 27908 27793 27910 0 27 18:26 ? 00:00:00 /usr/sbin/httpd.worker
nobody 27908 27793 27911 0 27 18:26 ? 00:00:00 /usr/sbin/httpd.worker
...
nobody 27908 27793 27935 0 27 18:26 ? 00:00:00 /usr/sbin/httpd.worker
nobody 27908 27793 27912 0 27 18:26 ? 00:00:00 /usr/sbin/httpd.worker