나는 데이터베이스 집약적이며 많은 시간 동안 처리하고 수천 개의 외부 네트워크 연결을 실행할 수 있는 PHP 응용 프로그램을 가지고 있습니다.
언제든지 3명 미만의 사용자가 이 애플리케이션에 연결됩니다.
이 워크로드에 가장 적합한 Apache mpm은 prefork/mod_php 또는 Worker/mod_fcgid입니까?
저는 Debian Lenny x64, 싱글 코어, 4GB RAM을 사용하고 있습니다.
답변1
느린 머신의 경우 작업자 모드가 더 잘 작동하고 CPU 사용량 및 로드가 더 낮습니다.
정적 콘텐츠를 제공하는 강력한 시스템의 경우 prefork mpm이 약 5% 더 빠릅니다.
Apache 벤치마크로 몇 가지 테스트를 수행할 기회가 있다면 다음을 권장합니다.아파치 벤치마크
또한 다음 벤치마크를 살펴볼 수 있습니다.Apache 프리포크와 작업자
데이터베이스 엔진이 동일한 서버에 설치되어 있습니까?
답변2
Apache에는 널리 사용되는 두 가지 MPM 모듈(Worker MPM 및 Pre-fork MPM)이 있습니다. PHP.net에서는 Pre-fork MPM 사용을 권장하는 반면, 대부분의 사이트 최적화 전문가는 스레드 Worker MPM을 활용하도록 권장합니다. 놀랍게도 로드 테스트에서는 상대적으로 작은 성능 차이가 나타났으며 서버에서 권장되지 않는 구현을 하도록 강요하는 차이는 확실히 아닙니다.
답변3
FastCGI를 통한 Worker + PHP는 잘 작동하는 경향이 있습니다. 역사적으로 많은 사람들은 스레드 MPM과 함께 mod_php를 사용하지 말라고 조언했습니다(일부 제4자 라이브러리가 제대로 작동하지 않았기 때문에). FastCGI를 사용하면 기본적으로 웹 서버에서 PHP를 "분리"합니다. , 그 문제를 피하십시오.
또 다른 장점은 이제 Apache 스레드/프로세스 크기가 더 작으므로 웹 서버(정적 콘텐츠 제공)에 더 많은 스레드/프로세스를 사용할 수 있고 사이트의 동적 부분을 수행하는 PHP 프로세스가 거의 없다는 것입니다.