응답하지 않는 웹 서버를 디버깅하는 방법

응답하지 않는 웹 서버를 디버깅하는 방법

우리는중형 EC2 인스턴스Ubuntu 12.04를 실행하여 Apache를 통해 약 12개의 소규모 PHP 웹 애플리케이션을 제공합니다.

거의 격일로 서버가 응답하지 않게 되며 기능을 복원하려면 인스턴스를 재부팅해야 합니다. 이 시간 동안에는 HTTP 또는 SSH를 통해 서버에 액세스할 수 없습니다.

매번 마지막으로 기록된 Apache 요청은 4MB PDF 문서를 제공하는 PHP 애플리케이션에 대한 것입니다. 사용자 에이전트는 항상 클라이언트를 iPad(특히 Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25)로 식별하고 IP 주소가 동일한 경우가 많으므로 동일한 사용자일 가능성이 높습니다.

PHP 애플리케이션은 레거시 애플리케이션이며 디스크에서 클라이언트로 파일 내용을 에코하기 전에 일부 권한을 확인합니다. iPad를 사용하거나 다른 방법으로 파일에 액세스하여 이 문제를 직접 재현할 수 없습니다.

서버가 다운될 때 어떤 일이 일어나는지 더 잘 파악하기 위해 몇 가지 모니터링 솔루션을 시도했지만 그 중 어느 것도 시스템 리소스에 문제가 있는 것으로 보이지 않습니다.

제 질문은 이 문제를 시도하고 문제를 해결하고 희망적으로 해결하기 위해 사용할 수 있는 몇 가지 전략이 무엇입니까?입니다.

답변1

Collectd 또는 sysstat 등을 사용하여 시스템 리소스(CPU 로드, 메모리, 디스크)를 모니터링하여 시작합니다.

여기서는 한계가 있다는 점을 명심하십시오. 설명하는 문제는 리소스(대개 메모리)의 고갈로 인해 발생할 수 있으므로 egrep -i 'killed process' /var/log/*OOM 킬러 호출을 찾으십시오.

시스템 로그에는 원인에 대한 추적( /var/log/messages, Apache 오류 로그)이 포함될 수 있습니다.

보다 자세한 로그를 활성화하고 시스템을 테스트하는 동안 세심한 주의를 기울이십시오.

관련 정보