아파치 멀티 프로세싱 모듈
IT 위키
아파치 멀티 프로세싱 모듈(Apache Multi-Processing Module, MPM)은 아파치 HTTP 서버에서 클라이언트 요청을 처리하는 방식과 서버의 동작 방식을 정의하는 구성 요소이다.
개요[편집 | 원본 편집]
아파치 HTTP 서버는 다양한 운영 체제와 하드웨어 환경에서 효율적으로 동작할 수 있도록 설계되었으며, 이를 위해 멀티 프로세싱 모듈(MPM, Multi-Processing Modules)을 사용하여 요청 처리 메커니즘을 유연하게 구성할 수 있도록 한다. MPM은 서버의 요청 처리 모델을 결정하며, 각 MPM은 고유한 방식으로 프로세스와 스레드를 관리한다.
주요 MPM 종류[편집 | 원본 편집]
아파치 HTTP 서버에서 일반적으로 사용되는 주요 MPM 유형은 다음과 같다.
- prefork: 각 요청을 별도의 프로세스가 처리하는 구조로, 스레드를 사용하지 않는다. 안정성과 호환성이 중요할 때 적합하다.
- worker: 각 프로세스가 여러 개의 스레드를 갖고 있으며, 스레드가 요청을 처리한다. 적절한 성능과 자원 사용의 균형을 제공한다.
- event: worker MPM을 기반으로 하며, keep-alive 연결을 보다 효율적으로 처리할 수 있도록 설계되었다. 비동기 이벤트 기반 처리 방식으로, 고성능 서버 환경에 적합하다.
MPM의 선택 기준[편집 | 원본 편집]
서버 환경과 애플리케이션의 특성에 따라 적절한 MPM을 선택하는 것이 중요하다. 예를 들어, 다음과 같은 기준이 고려된다.
- 스레드 안전성: 사용하는 모듈이나 애플리케이션이 스레드 안전하지 않다면 prefork MPM이 더 적합하다.
- 성능: 많은 동시 접속이 필요한 경우 event 또는 worker MPM이 유리하다.
- 시스템 자원 사용: worker와 event MPM은 더 적은 메모리로 많은 요청을 처리할 수 있다.
설정 및 변경 방법[편집 | 원본 편집]
MPM은 아파치 서버의 빌드 방식에 따라 고정되거나 동적으로 설정할 수 있다.
MPM 확인[편집 | 원본 편집]
설치된 아파치의 MPM 종류는 다음 명령어로 확인할 수 있다.
apachectl -V | grep MPM
또는 동적으로 MPM이 로드되는 경우, 아파치 설정 파일에서 LoadModule
디렉티브를 통해 확인할 수 있다.
MPM 변경 방법[편집 | 원본 편집]
- 동적 MPM 환경의 경우: 아파치 설정 파일(
httpd.conf
) 또는 포함된 설정 파일(mods-enabled/mpm_*.conf
)에서 원하는 MPM 모듈만 활성화하고, 나머지는 비활성화해야 한다.
LoadModule mpm_event_module modules/mod_mpm_event.so #LoadModule mpm_worker_module modules/mod_mpm_worker.so #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
- 고정 MPM 환경의 경우: 아파치를 재컴파일해야 하며,
--with-mpm
옵션을 사용한다.
./configure --with-mpm=worker
주요 설정 디렉티브[편집 | 원본 편집]
MPM별로 설정할 수 있는 주요 디렉티브는 다음과 같다. 예시는 event MPM 기준이다.
StartServers
: 초기 프로세스 수MinSpareThreads
,MaxSpareThreads
: 여유 스레드 최소/최대값ThreadsPerChild
: 하나의 프로세스당 생성되는 스레드 수MaxRequestWorkers
: 동시 요청 최대 처리 수ServerLimit
: 생성 가능한 최대 프로세스 수
해당 디렉티브는 MPM에 따라 다소 상이하며, conf/extra/httpd-mpm.conf
파일에서 설정하는 경우가 많다.
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Laurie, Ben, and Peter Laurie. Apache: The Definitive Guide. O'Reilly Media, 2003.
- Bowen, Rich. The Apache Modules Book: Application Development with Apache. Prentice Hall, 2007.