작업자 MPM 또는 Prefork?

작업자 MPM 또는 Prefork?

여기에 있는 두 모듈 사이에 비교 주제가 있다는 것을 이해하지만 이는 다릅니다.

VPS에서 일부 메모리 사용량을 확보하는 데 도움을 주기 위해 cPanel 지원팀에 문의했습니다. 그들은 Apache 2.4 'httpd' 하위 프로세스가 약 80MB RSS를 사용하는 반면, 테스트 서버에서는 유사한 Apache 2.4 빌드가 Apache 하위 프로세스당 약 3MB RSS만 사용한다는 사실을 발견했습니다.

한동안 문제에 대해 논의한 후 Prefork를 사용하는 대신 Apache 2.4에서 Worker MPM으로 전환할 것을 제안했습니다.

나는 그들이 말한 것을 검색했고 Worker MPM이 더 적은 메모리를 사용하지만 스레드로부터 안전하지 않다는 것을 발견했습니다. 웹사이트의 일부 다른 주제에서는 Worker가 PHP 애플리케이션 또는 mod_php와 작동하지 않을 것이라고 말합니다. 이것이 맞는지 아닌지 잘 모르겠습니다.

너무 혼란스러워요 어떻게 해야 하나요? 내 계정에서 실행 중인 PHP 스크립트가 있는데 그 스크립트를 중단하거나 데이터가 손상되는 것을 원하지 않습니다.

당신의 제안은 무엇입니까? Worker MPM으로 전환하면 PHP 애플리케이션을 중단하지 않고도 메모리 부족 문제가 해결됩니까?

Apache 사용에 관한 해결책이 있습니까? 80MB RSS는 3MB RSS에 비해 너무 높습니다.

답변1

PHP를 Apache 모듈로 사용해야 한다면 Prefork를 사용해야 합니다. 왜냐하면 말씀하신 대로 PHP는 기본적으로 스레드로부터 안전하지 않은 것으로 컴파일되고 Worker MPM은 스레드를 사용하기 때문입니다.

PHP를 FastCgi(PHP-FPM)로 사용할 수 있으면 Worker MPM을 사용할 수 있습니다.

그런데 아마도 오늘날 PHP를 배포하는 가장 좋은 방법은 Nginx와 PHP-FPM을 사용하는 것입니다.

관련 정보