이 기사는 Apache의 Prefork, Worker 및 Event MPM을 비교합니다. 동시성 및 요청 특성에 따라 성능 차이를 강조하고 요청 처리 전략을 분석합니다. 이벤트 MPM은 일반적으로 트래픽이 높습니다
Apache의 다중 처리 모듈 (MPMS)은 들어오는 요청을 처리하는 방법을 결정합니다. 각 MPM은 아동 프로세스 관리, 성능 및 자원 활용에 영향을 미치기위한 다른 전략을 사용합니다. Prefork, Worker 및 Events의 세 가지 주요 MPM을 분류합시다.
Prefork : 이 MPM은 요청이 도착하기 전에 고정 된 수의 자식 프로세스를 만듭니다. 각 어린이 프로세스는 한 번에 단일 요청을 처리합니다. 요청이 들어 오면 Apache는 이용 가능한 자식 프로세스에 할당합니다. 모든 프로세스가 바쁘면 프로세스가 자유롭게 될 때까지 요청이 줄어 듭니다. 이 모델은 간단하고 강력하여 우수한 안정성을 제공하지만 교통량이 많은 사이트의 수는 제한되어 있기 때문에 높은 트래픽 사이트의 경우 덜 효율적일 수 있습니다.
작업자 : 작업자 MPM은 하이브리드 접근법을 사용합니다. 부모 프로세스 풀을 만듭니다. 각각은 다수의 어린이 프로세스 (스레드)를 생성합니다. 각 어린이 프로세스는 스레드를 사용하여 여러 요청을 동시에 처리 할 수 있습니다. 이를 통해 스레드는 프로세스보다 가벼운 체중이기 때문에 Prefork보다 리소스 활용도가 향상됩니다. 스레드가 차단 된 경우 (예 : 네트워크 작동을 기다리고 있음) 동일한 프로세스 내의 다른 스레드는 요청을 계속 처리하여 동시성을 향상시킬 수 있습니다.
이벤트 : 이벤트 MPM은 작업자 모델을 기반으로 이벤트 중심의 아키텍처를 추가합니다. 이벤트 (예 : 들어오는 요청과 같은)를 처리하고 작업자 스레드에 할당하는 단일 기본 프로세스를 사용합니다. 이 모델은 매우 효율적이므로 소수의 스레드가 많은 동시 요청을 처리 할 수 있습니다. 많은 단기 요청이있는 시나리오에서 탁월하여 각 요청에 대한 프로세스 또는 스레드를 작성하고 관리하는 오버 헤드를 최소화합니다. 이벤트 MPM은 비동기 I/O를 사용하여 성능을 더욱 향상시킵니다.
성능 차이는 각 MPM이 자원과 동시성을 관리하는 방식에서 비롯됩니다.
교통량이 많은 웹 사이트의 경우 이벤트 MPM은 일반적으로 최고의 성능을 제공합니다. 오버 헤드가 최소화 된 많은 동시 요청을 처리하는 능력은 많은 단기 연결 (예 : 웹 서빙, API)이있는 시나리오에 이상적입니다. 작업자 MPM은 특히 성능과 안정성 사이의 균형이 필요한 경우에도 좋은 선택 일 수 있으며 요청의 특성은 순전히 수명이 짧지 않습니다.
최적의 MPM을 선택하는 것은 몇 가지 요소에 따라 다릅니다.
요약하면, 하나의 크기에 맞는 대답은 없습니다. 신중한 모니터링 및 벤치마킹으로 시작하십시오. 많은 사용 사례의 좋은 출발점으로 작업자 MPM으로 시작한 다음, 무거운 부하에서 성능 병목 현상이 발생하는 경우 이벤트 MPM을 고려하십시오. MPM 구성을 변경 한 후 항상 서버의 성능을 철저히 테스트하고 모니터링하십시오. Prefork는 일반적으로 성능이 2 차 관심사 인 안정성 중요 상황에 대해서만 고려해야합니다.
위 내용은 Apache는 MPMS (Prefork, Worker, Event)로 요청 처리를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!