Apache2는 정상 상태에서 정적 서비스를 느리게 제공합니다.

Apache2는 정상 상태에서 정적 서비스를 느리게 제공합니다.

내 Apache 상태는 다음과 같습니다.

201 requests/sec - 98.8 kB/second - 504 B/request
85 requests currently being processed, 345 idle workers
_____CCW_C_____C__C__C_R____C_WC_________C__C____CW__C__CCC_____
__C____W______C___C___CW__C_C______C__W_C__C_____CCC____C______R
CC_C_______C___C____C______________C______C__C________________C_
___________________C______________________C_______C___C_____C___
CC____C__C___R_____C_C_CC__________C___C___________R____C_C_C___
______C______W_W__W___C____________________C__WCC__R__R_C_______
R__RC________________________C___R____W__C____..................
....................................................

서버 로드는 4코어 시스템에서 평균 2입니다.

IO 사용률은 10~15%이며 70%를 넘는 점프는 많지 않습니다.

머신에는 거의 4GB의 여유 공간이 있고 스왑을 0개 사용합니다.

컴퓨터의 사이트는 PHP 사이트입니다. 모든 PHP 코드는 액세스할 때 대부분 최적화되고 빠르지만 요청이 중단되는 경우도 있습니다. 의미가 멈췄습니다. 10초 이상 응답이 없습니다. 우리는 PHP 코드를 디버깅했지만 매우 최적이고 빠릅니다. 우리는 다음 요청을 테스트하기로 결정할 때까지 많은 시간을 소비합니다.

<html><body>test</body></html>

test.html 페이지.

이 정적 리소스도 PHP 페이지가 '멈추는' 것과 같은 방식으로 '멈추는' 상태가 됩니다.

시스템 상태와 정적 파일이라는 사실을 고려할 때 어떻게 이것이 가능합니까?

네트워크를 테스트했지만 사이트 모니터링에서 PHP가 '느림'을 표시하면 html 테스트 파일도 로드하는 데 10초보다 오래 걸립니다.

time lynx -dump http://127.0.0.1/test.html

우리는 이 문제를 해결하기 위해 필사적으로 노력하고 있지만 해결할 수는 없는 것 같습니다.

답변1

아파치에 파일 핸들이 부족할 수도 있나요? 얼마나 많은 파일 핸들을 허용했습니까? 기본 1024는 곧 병목 현상이 발생할 수 있습니다. Linux에서는 파일의 한도를 높입니다 /etc/security/limits.conf.

정지 중에 디스크 활동이 많이 발생합니까? Apache 액세스 로그와 기타 로그를 매우 자세하게 활성화한 경우 최신 변경 사항을 커밋하는 파일 시스템이 아닐까요? 이는 어떤 식으로든 Apache에 영향을 주어서는 안 되지만 알 수는 없습니다.

/proc/sys/kernel/random/entropy_avail그리고 확인하기 위해 포장 마차 동안 살펴보십시오 . 예를 들어 로 볼 수 있습니다 watch -n1 'cat /proc/sys/kernel/random/entropy_avail'. 라고 표시되면 0커널에 엔트로피가 부족하여 사용 가능한 엔트로피가 더 많아질 때까지 Apache를 차단하는 것입니다.

이 경우 실제 엔트로피를 사용할 수 없는 상황에서 /dev/urandom에서 /dev/random으로 준난수를 퍼내는 데몬을 설치 rng-tools하고 실행할 수 있습니다.rngd

답변2

내부 내용은 자세히 다루지 않았지만 내 경험과 들은 바에 따르면... PHP가 내장 모듈( libphp5.so)을 사용하여 Apache에서 실행되고 있는 경우 Apache는 PHP(및 선택적으로 공유 모듈)를 메모리에 로드합니다. PHP 코드가 실행되지 않는 경우에도 모든 요청.

사용을 고려해보세요nginxApache 앞의 역방향 프록시로. nginx는 정적 리소스를 제공하는 속도가 놀라울 정도로 빠르며 올바르게 구성하면 사용량이 많은 웹 서버의 로드를 실제로 줄일 수 있습니다. 보너스 포인트를 얻으려면 nginx 내에서 FastCGI를 통해 실행되도록 PHP를 구성하세요. 보세요이 기사그 이유를 알아보기 위해. 정말 좋은 방법입니다. 지난주에 Ubuntu 10.04, nginx, generate-fcgi 및 php-cgi를 사용하여 새 웹 서버를 설정했는데 시간이 거의 걸리지 않았습니다. 기록을 위해 PHP 5.3은 Ubuntu 10.04와 번들로 제공됩니다.

관련 정보