Apache: 어떤 페이지/가상 호스트가 내 서버를 종료하는지 확인하세요.

Apache: 어떤 페이지/가상 호스트가 내 서버를 종료하는지 확인하세요.

웹 서버를 다시 온라인으로 전환할 수 없습니다. 서버가 계속 쓰레기로 변하고 재부팅하려면 강제로 전원을 껐다 켜야 합니다.

공유 호스트에 있기 때문에 범인을 찾는 것이 더욱 어렵습니다.

CPU 사용량이 급증하는 특정 페이지(또는 적어도 어떤 가상 호스트)를 어떻게 찾을 수 있나요?

저는 상당히 표준적인 Apahce+MySQL+PHP를 사용하는 CentOS를 사용하고 있습니다.

감사해요!

답변1

아마도 가장 좋은 아이디어는 apachetop을 설치하는 것입니다.https://code.google.com/p/apachetop/, Apache의 서버 상태를 사용할 수도 있지만 apachetop을 사용하면 훨씬 더 읽기 쉽습니다.

답변2

페이지는 실제로 이 문제와 관련이 없습니다.

다음 명령은 httpd 작업자가 있는 현재 작업 디렉터리를 사용하여 CPU 백분율로 정렬된 httpd의 pid 목록을 출력해야 합니다.

물론 이것은 httpd가 범인이라고 가정합니다.

IFS=" "; ps -A ho pcpu,comm,pid | grep httpd | sort -k1n \
while read pcpu comm pid; do \
    echo -n "${pcpu"}: "l pwdx "${pid}"; 
done

나는 다음과 비슷한 결과를 얻습니다.

0.0: 1850: /
0.0: 1852: /
0.0: 1854: /
0.0: 1853: /
0.0: 1855: /
0.0: 1856: /
0.0: 1857: /
0.0: 1858: /

이는 아파치가 가상 호스트 내부에서 작업을 수행하기 전에 디렉토리를 가상 호스트 문서 루트로 변경하기 때문에 작동합니다. 따라서 해당 문서 루트가 있는 가상 호스트가 범인입니다.

동일한 문서 루트를 사용하는 가상 호스트가 두 개 이상인 경우 두 가상 호스트를 모두 조사하여 현재 상태를 확인해야 합니다.

CPU 시간을 차지하는 아파치 작업자가 없기 때문에 모두 0.0이므로 주문이 이루어지지 않습니다.

문제가 실제로 SQL 쿼리인 경우에는 아무것도 표시되지 않을 것으로 예상됩니다.

관련 정보