프리포크(pre-fork): 서버에 들어오는 커넥션마다 프로세스를 생성한다. 각 프로세스는 다른 프로세스와 분리돼 있고, 따라서 실행의 특정 단계에서 완전히 동일한 요청을 수행하더라도 메모리를 공유하지 않는다. (대체로 오래된 어플리케이션이나 라이브러리 같은) 쓰레딩을 지원하지 않는 라이브러이와 연결된 어플리케이션을 실행하는 데 안전하다.

워커(worker): 부모 프로세스가 자식 프로세스 실행을 책임진다. 자식들 중 일부는 새로 들어오는 커넥션을 수신하고, 다른 자식들은 요청받은 내용을 내어준다. 각 프로세스는 스레드를 사용하기 때문에 (스레드 하나가 연결 하나를 제어한다) 한 프로세스가 여러 요청을 동시에 제어할 수 있다. 이런 식으로 커넥션을 다루면 안정성을 유지하면서도 자원 활용에 더 유리하다. 새로운 커넥션을 즉시 제공할 준비가 돼 있는 자유로운 스레드를 보유한 프로세스들이 있게 되기 때문이다.

이벤트(event): 이 MPM 방식은 워커에 기반해서 한 단계 더 나간 방법이다. 자식 프로세스와 그에 연결된 스레드의 작업을 부모 프로세스가 관리하는 방법을 최적화했다. 기본적으로 한 연결은 5초 동안 열려 있다가 아무런 이벤트가 일어나지 않으면 닫힌다. 이것이 해당 커넥션과 연관된 스레드가 유지되는 시간을 가리키는 keep-alive 지시자의 기본값이다. 이벤트 MPM은 프로세스가 스레드를 관리하게 하므로 어떤 스레드들이 살아있는 커넥션들을 유지하고 있는 동안 또다른 스레드들은 새로 들어오는 커넥션들을 자유롭게 처리할 수 있다. 할당된 작업을 스레드에 재배포할 수 있게 하면 리소스 활용도와 성능이 향상된다.