apache2 + mod_fastcgi + suexec + php5.2 = 높은 부하에서 불안정

apache2 + mod_fastcgi + suexec + php5.2 = 높은 부하에서 불안정

나는 apache2+fastcgi+suexec+php5를 사용하여 하나의 서버에서 여러(~30)개의 다른 사이트를 호스팅하고 있습니다. 사이트마다 스크립트 로드 및 실행 시간이 다릅니다(일부는 5~7초 동안 요청을 처리하고 일부는 <1sek).

때로는 단일 사이트가 매우 높은 로드를 받는 경우(이 사이트의 모든 PHP 인스턴스가 생성되고 사용됨) 전체 Apache 서버가 중단됩니다. Apache(작업자 mpm)는 상한까지 새 프로세스를 생성합니다. 로드가 높고 프로세스 제한에 빠르게 도달하는 사이트뿐만 아니라 모든 사이트에 대한 모든 새로운 요청을 대기열에 넣기 시작한 것 같습니다... 아파치를 다시 시작하면 문제가 해결됩니다...

구성: FastCgiConfig -singleThreshold 1 -multiThreshold 10 -listen-queue-length 30 -maxProcesses 80 -maxClassProcesses 12 -idle-timeout 30 -pass-header HTTP_AUTHORIZATION -pass-header If-Modified-Since -pass-header If-None-Match

(이전에는 기본 -listen-queue-length = 100이었지만 아무것도 변경되지 않았습니다...)

어떤 제안이 있으십니까?

또 다른 질문 - 이 청취 대기열은 어떻게 구현됩니까? 전체 아파치에 대한 하나의 대기열입니까, 아니면 정의된 모든 PHP 애플리케이션(suexec 사이트)에 대한 고유 대기열입니까?

나는 다음과 같은 것을 달성하고 싶습니다. 한 사이트가 높은 로드를 받고 해당 대기열이 가득 차면 서버가 다음 요청을 반송하지만 이 사이트에 대해서만 .. 다른 사이트는 제대로 작동해야 합니다...

답변1

Apache 2.4는 요청을 php-fpm으로 프록시할 수 있는 새로운 fastcgi 프록시 모듈(mod_proxy_fcgi)을 제공합니다. mod_proxy를 중개자로 사용한다는 것은 메인 서버와 별도로 큐잉 및 고갈 매개변수를 포함하여 모든 mod_proxy 옵션에 액세스할 수 있다는 것을 의미합니다.

Apache 2.4 이벤트 MPM 및 php-fpm을 사용하여 테스트 서버에서 설정하는 것이 좋습니다. 다양한 애플리케이션에 맞게 각 PHP 풀을 조정할 수도 있습니다.

답변2

대신 mod_fcgid를 사용해 보셨나요? 서버의 높은 부하를 처리하는 것이 훨씬 좋습니다.

답변3

fastcgi가 PHP 스크립트를 사용자 프로세스로 가동하는 경우 /etc/security/limits.conf 정의(특히 nproc)는 OS에 의해 시행되어야 합니다.

즉, Apache는 해당 사용자로 프로세스를 스핀업하려고 시도하고 프로세스 제한을 초과했기 때문에 OS는 프로세스를 종료합니다.

하지만 이것은 일종의 문제입니다. 머신이 유휴 상태라면 여전히 연결이 끊길 것입니다.

더 큰 규모의 클라이언트를 전용 시스템으로 분리하는 것은 어떨까요? 아니면 설정된 설치 공간/런타임 허용량을 사용하여 높은 포트에서 수신 대기하는 보조 아파치를 가동하시겠습니까? mod_proxy를 사용하여 요청을 투명하게 전달할 수 있습니다.

즉, 저는 fastcgi에 익숙하지 않기 때문에 이미 사용 가능한 할당량 시스템이 있을 수 있습니다. 하지만 문서를 빠르게 읽어도 아무것도 얻지 못했습니다.

답변4

여기에서 일련의 웹 튜토리얼을 볼 수 있습니다. http://blog.stuartherbert.com/php/category/the-web-platform/

저는 개인적으로 이러한 내용이 매우 통찰력이 있다고 생각합니다! 이 튜토리얼이 도움이 될 수도 있습니다: http://blog.stuartherbert.com/php/2008/10/07/can-you-secure-a-shared-server-with-php-fastcgi/

그렇게 많은 리소스를 사용하고 있다면 트래픽이 많은 사이트를 자체 시스템으로 솔직히 옮기는 것이 좋습니다.

관련 정보