Apache MPM 이란?

YOBY·2024년 1월 30일
0

MPM은 다중처리 모듈(Multi-Processing Module)의 약자로, 아파치 웹 서버에서 클라이언트의 요청을 어떻게 처리할지를 결정하는 핵심 모듈입니다.

아파치 웹 서버는 여러 사용자의 요청을 동시에 처리해야 하기 때문에 이러한 다중 처리를 위해 MPM이 사용됩니다.
주요 MPM은 Prefork, Worker, Event 세 가지가 있습니다.


Prefork MPM

  • 특징
    하나의 요청에 대해 하나의 자식 프로세스가 생성되어 처리합니다.
    각 프로세스는 하나의 스레드를 사용하여 요청을 처리합니다.
    안정성이 높고 각 프로세스는 독립적으로 동작하므로 안정성이 보장됩니다.

  • 장점
    안정성이 높습니다.
    독립적인 프로세스이기 때문에 다른 요청에 영향을 주지 않습니다.

  • 단점
    메모리 사용량이 많아질 수 있습니다.


Worker MPM

  • 특징
    하나의 자식 프로세스 안에 여러 개의 스레드를 사용하여 요청을 처리합니다.
    각 프로세스당 제한된 스레드 개수를 사용하며, 이를 넘어가면 새로운 자식 프로세스가 생성됩니다.
    메모리를 효율적으로 사용하며 Prefork보다 부하 위험이 낮습니다.

  • 장점
    메모리를 효율적으로 사용합니다.
    부하 위험이 낮습니다.

  • 단점
    스레드 간의 동기화 문제가 발생할 수 있습니다.


Event MPM

  • 특징
    Worker MPM과 유사하나, 이벤트 드리븐 방식을 사용하여 성능을 개선합니다.
    KeepAlive와 같은 연결을 유지하는 경우에 성능이 저하되는 문제를 해결하기 위해 개발되었습니다.
    이벤트를 다루는 스레드를 하나 둠으로써 성능을 향상시킵니다.

  • 장점
    성능이 향상됩니다.
    연결 유지와 관련된 문제를 해결할 수 있습니다.

  • 단점
    설정이 복잡할 수 있습니다.


Apache HTTP 서버의 빌드 구성 정보

  • 명령어 : httpd -V

  • -D 옵션들은 서버가 빌드될 때 사용된 컴파일된 내용들입니다.

MPM 설정

  • ServerLimit: 이 디렉티브는 서버가 수용할 수 있는 최대 동시 연결 수를 제한합니다.
    여기서는 최대 400개의 동시 연결을 허용하도록 설정되어 있습니다.

  • StartServers: Apache 서버가 시작될 때 생성되는 프로세스의 수를 지정합니다.
    여기서는 25개의 서버가 시작될 때 동시에 시작됩니다.

  • MinSpareServers: Apache 서버에서 항상 유지되어야 하는 최소한의 빈 서버 프로세스 수를 지정합니다.
    여기서는 25개로 설정되어 있으므로 항상 적어도 25개의 빈 서버 프로세스가 유지됩니다.

  • MaxSpareServers: Apache 서버에서 허용되는 최대 빈 서버 프로세스 수를 지정합니다.
    여기서는 50개로 설정되어 있으므로 서버가 유휴 상태일 때 최대 50개의 빈 서버 프로세스가 유지됩니다.

  • MaxClients: 이 디렉티브는 동시에 처리될 수 있는 최대 클라이언트 연결 수를 제한합니다.
    여기서는 최대 400개의 클라이언트 연결을 허용하도록 설정되어 있습니다.

  • MaxRequestsPerChild: 각 서버 프로세스가 처리할 수 있는 최대 요청 수를 제한합니다.
    여기서는 각 프로세스가 10000개의 요청을 처리한 후에 종료되고 재시작되도록 설정되어 있습니다.


MPM을 선택할 때는 서버의 용도, 환경, 요구 사항을 고려하여 적절한 MPM을 선택해야 합니다. 각 MPM은 서버의 안정성과 성능에 영향을 미치므로 신중하게 고려해야 합니다.


0개의 댓글