가동 중지 시간이 발생하는 성능 문제에 대해 웹 서버를 디버깅하는 프로세스는 무엇입니까?

가동 중지 시간이 발생하는 성능 문제에 대해 웹 서버를 디버깅하는 프로세스는 무엇입니까?

불행히도 이것은 다소 모호한 질문입니다. 그러나 나는 때때로 직면합니다.

현재 내 서버는 완전히 관리되는 CentOS 5 - Plesk 9.2.1입니다.

최근에는 Apache(또는) mysql 또는 둘 다 크게 느려지고 페이지가 반환되지 않거나 믿을 수 없을 정도로 느리게 반환되는 경우 서버가 계속 질식합니다. mysql을 다시 시작하면 도움이 되고, 때로는 apache를 다시 시작하면 도움이 되고, 다른 경우에는 전체 서버를 다시 시작해야 합니다. (SSH는 실제로 느리게 작동하기 시작합니다).

그래서 제 질문은 가동 중지 시간이 발생하는 성능 문제에 대해 웹 서버를 디버깅하는 프로세스는 무엇입니까?

나는 서버가 너무 많은 트래픽을 받고 있다고 생각하지 않습니다(일관적인 트래픽을 받고 있지만).무엇죽여버릴 것 같아...

어디서부터 시작해야 할까요?

돕다!

답변1

MySQL에서 어떤 형태의 쿼리 프로파일링을 시도해 보셨나요? 매우 기본적이지만 분명한 예로 SELECT * FROM tbl1 INNER JOIN tbl2 ... INNER JOIN tbl3... LEFT JOIN tbl 4...와 같은 매우 집약적인 쿼리를 실행하면 많은 행 또는 쿼리가 반환됩니다. 제대로 인덱싱되지 않으면 시스템 속도가 크게 느려질 수 있습니다. 경험이 부족한 시절에 최적화하지 않은 것을 배웠습니다 ;-)

mysqlreport 및 tune-primer.sh 스크립트와 같은 도구는 이를 위한 좋은 출발점입니다. mysqlreport는 다음 위치에 있습니다.http://hackmysql.com/mysqlreport, 대신 Google에서 "tuning-primer.sh"에 대한 링크를 1개만 게시할 수 있습니다 :-)

답변2

Bernhard의 응답은 좋지만 sysstat를 건너뛰고 바로 다음으로 이동하는 것이 좋습니다.무닌. 로드를 그래픽으로 표현하면 교체(아파치 프로세스가 너무 많습니까?), 디스크 휴지통(잘못 최적화된 SQL 쿼리, 너무 큰 임시 테이블?)인지 파악하기가 훨씬 쉬울 것입니다. ], CPU 전력 부족 등

MySQL의 경우 켜기느린 쿼리 로그.

답변3

sysstat 패키지를 설치하는 것부터 시작해야 합니다. 10분마다 CPU, 메모리 및 I/O 로드에 대한 통계를 생성합니다. 서버가 다시 느려지기 시작하면 "sar" 유틸리티(패키지의 일부)의 출력을 조사하여 실제 병목 현상이 발생한 리소스를 식별할 수 있습니다.

관련 정보