웹 서버를 다시 온라인으로 전환할 수 없습니다. 서버가 계속 쓰레기로 변하고 재부팅하려면 강제로 전원을 껐다 켜야 합니다.
공유 호스트에 있기 때문에 범인을 찾는 것이 더욱 어렵습니다.
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 쿼리인 경우에는 아무것도 표시되지 않을 것으로 예상됩니다.