아파치 멀티 프로세싱 모듈

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.

각주[편집 | 원본 편집]