답변:
문서가 말했듯이 스레드가 안전하지 않은 라이브러리와의 호환성을 위해 스레딩을 피해야하는 경우 프리 포크 MPM을 사용해야합니다. 일반적으로 사소한 아파치 모듈 ( mod_php
또는 더 정확하게 말하면, 링크 된 무수한 확장 및 라이브러리)은 일종의 스레드로부터 안전하지 않은 라이브러리를 가지고 있습니다. 안전한 코드)), 꽤 아파치 아파치 설치를 사용하지 않는 한, prefork MPM에 갈 것입니다.
php-fpm
FastCGI 를 통해) 이러한 문제는 적용되지 않습니다 . 그런 다음 작업자 MPM은 괜찮습니다. 그러면 fpm은 모든 PHP 요청을 자체 프로세스로 실행하지만 Apache는 스레드를 실행할 수 있습니다. PHP-Thread-safety 문제 mod_php
는 Apache 프로세스 내에서 PHP를 실행하는를 사용하지 못하게합니다 .
많은 수 (> 100)의 동시 연결을 제공하면서 안전하지 않은 확장 프로그램을 실행하는 일반적인 솔루션은 fastCGI (기본 아파치 모듈 인 mod_fcgid)에서 PHP를 실행하고 Worker MPM을 실행하는 아파치 인스턴스에서 동적 요청을 프록시하는 것입니다.
이를 통해 정적 및 동적 컨텐츠를 혼합하여 제공 할 때 적당한 양의 메모리 (4 ~ 8GB)로 수백에서 최대 1000 개까지의 동시 연결을 확장 할 수 있습니다.
물론 전체 배포 (memcached, varnish)의 일부로 프런트 엔드 캐싱 솔루션도 조사해야합니다.
또는 아파치 2.4와 네이티브 이벤트 MPM으로 업그레이드하여 동시성을 훨씬 개선 된 방식으로 처리합니다 (스레드는 폴링 대기 중이 아니라 연결시 해제됩니다).
이것은 당신이 제공하는 것에 매우 특별한 것입니다. 작은 정적 연결을 많이 수행하면 스레드가 더 가볍고 빨라집니다. 지속적으로 생성되는 큰 앱이 거의 없다면 prefork는 성숙도와 안정성으로 인해 우위를 차지할 수 있습니다. 필요한 것을 설정하고, 테스트하고, MPM 모듈을 교체하고, 다시 시도하고, 어느 것이 더 적합한 지 확인하십시오.
그 유형과 종류의 트래픽이 필요합니다. 또한 먼저 포크 포크와 작업자의 주요 차이점을 이해해야합니다. 아래 기사가 도움이되기를 바랍니다. http://slashroot.in/how-is-nginx-different-from-apache