Web Servers

Apache MPM(Multi-Processing Module) 설정 방법 정리

midworker 2025. 5. 13. 20:47
반응형

Apache MPM(Multi-Processing Module) 설정 방법 정리

Apache HTTP Server는 요청을 처리하는 방식을 선택할 수 있도록 MPM(Multi-Processing Module) 기능을 제공합니다. 이 글에서는 주요 MPM 종류와 설정 방법, 실전 운영 팁을 소개합니다.


1. MPM이란?

MPM은 Apache가 클라이언트 요청을 어떻게 처리할지 결정하는 핵심 모듈입니다. OS 환경이나 목적에 따라 적절한 MPM을 선택해야 합니다.


2. 주요 MPM 종류

MPM 종류 특징
prefork 프로세스 기반. 각 요청마다 별도 프로세스 사용. 스레드 미지원 모듈에 적합 (예: PHP CGI)
worker 스레드 기반. 하나의 프로세스 안에서 여러 스레드로 요청 처리
event worker의 확장. KeepAlive 연결을 효율적으로 처리하여 성능 향상

3. 현재 Apache의 MPM 확인 방법

$ apachectl -V | grep MPM

예시 출력:

Server MPM:     event

4. MPM 설정 위치

보통 아래 파일 중 하나에서 설정합니다:

  • /etc/httpd/conf.modules.d/00-mpm.conf
  • 또는 httpd.conf 안에서 <IfModule> 블록 사용

5. 각 MPM 설정 예제

▶ prefork MPM

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxRequestWorkers    150
    MaxConnectionsPerChild  1000
</IfModule>
  • 프로세스 기반이라 메모리 사용량이 높지만, 안정성은 좋음

▶ worker MPM

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestWorkers   150
    MaxConnectionsPerChild  1000
</IfModule>
  • 스레드 기반이라 적은 메모리로 많은 요청 처리 가능

▶ event MPM

<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestWorkers   150
    MaxConnectionsPerChild  1000
</IfModule>
  • KeepAlive 요청을 별도 스레드로 분리해 성능 최적화
  • 최근 Apache 2.4+에서 기본 MPM

6. 운영 팁

  • PHP 사용 시prefork가 안정적입니다. 특히 mod_php 연동 시 권장
  • 정적 파일 처리 및 프록시 중심이면 event MPM이 유리합니다
  • MaxRequestWorkers 설정은 서버의 메모리 총량을 고려해 설정해야 합니다
  • 변경 후에는 반드시 Apache 재시작 필요:
    $ systemctl restart httpd

마무리

MPM은 Apache 성능과 안정성에 직접적인 영향을 주는 중요한 설정입니다.
운영 목적, 트래픽 특성, 백엔드 연동 방식에 따라 적절한 MPM을 선택하고 튜닝해보세요.

반응형