본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

아파치 멀티 프로세싱 모듈

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 종류는 다음 명령어로 확인할 수 있다.

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.