리눅스

아파치 MPM 방식에 대한 개념과 주요 차이점

코드버스 2023. 6. 27. 16:48
728x90
반응형

아파치 MPM 방식에 대한 개념과 주요 차이점

아파치 웹 서버의 Multi-Processing Module (MPM)은 요청을 처리하는 방식을 정의하고 관리하는 핵심 컴포넌트입니다. 아파치 웹 서버의 Multi-Processing Module (MPM)에는 prefork, worker, 그리고 event와 같은 세 가지 주요 방식이 있습니다. 이들 방식에 대한 개념과 주요 차이점을 설명하겠습니다.

1. Prefork MPM

  • prefork MPM은 가장 전통적인 방식으로, 아파치 서버의 기본 MPM입니다.
  • 이 방식은 각 요청을 별도의 프로세스로 처리합니다.
  • 각 프로세스는 독립된 메모리 공간을 사용하며, 요청마다 새로운 프로세스를 생성합니다.
  • 이로 인해 안정성과 호환성이 높지만, 많은 메모리를 소비하고 높은 프로세스 생성 비용을 갖습니다.
  • 주로 PHP와 같은 스크립트 언어와의 연동에 적합합니다.

2. Worker MPM

  • worker MPM은 다중 스레드 방식으로 요청을 처리합니다.
  • 아파치 서버는 여러 개의 프로세스를 생성하고, 각 프로세스는 여러 개의 스레드를 가지고 있습니다.
  • 스레드는 프로세스 내에서 메모리를 공유하고, 요청을 병렬로 처리할 수 있습니다.
  • 이 방식은 메모리 사용량을 줄이고 더 높은 처리량을 제공할 수 있습니다.
  • 하지만 스레드 간 동기화와 관련된 복잡성과 일부 확장 모듈과의 호환성 문제가 있을 수 있습니다.

3. Event MPM

  • event MPM은 아파치 2.4 버전 이후부터 추가된 MPM으로, 비동기 I/O를 사용하여 더 효율적으로 요청을 처리합니다.
  • 이 방식은 프로세스 내에서 멀티플렉싱과 이벤트 드리븐 아키텍처를 사용하여 요청을 처리합니다.
  • 요청에 대한 이벤트를 비동기적으로 처리하고, 블로킹되지 않고 다른 요청을 처리할 수 있습니다.
  • 이로 인해 메모리 사용량이 감소하고, 높은 처리량과 확장성을 제공할 수 있습니다.
  • event MPM은 Worker MPM의 일부 기능을 포함하고 있으며, 일부 확장 모듈과의 호환성 문제를 개선하였습니다.

주요 차이점

  • prefork는 프로세스 기반의 MPM이며, workerevent는 스레드 기반의 MPM입니다.
  • prefork는 각 요청마다 독립적인 프로세스를 생성하고, workerevent는 프로세스 내에서 여러 개의 스레드를 사용합니다.
  • prefork는 안정성과 호환성이 높지만 메모리 사용량이 많습니다.
  • worker는 메모리 사용량을 줄이고 높은 처리량을 제공하지만, 스레드 간 동기화와 호환성 문제가 있을 수 있습니다.
  • event는 비동기 I/O를 사용하여 메모리 사용량을 감소시키고 높은 처리량과 확장성을 제공합니다.

 

MPM 선택은 서버의 요구 사항, 트래픽 패턴, 확장 모듈 호환성 등을 고려하여 결정되어야 합니다.

 

728x90
반응형