저는 현재 1.2ghz 1gb RAM 보드에 연결된 2.4ghz 및 5ghz msata 카드가 장착된 Linux 시스템(linaro)을 사용하고 있습니다.
보드에 웹 앱도 있습니다(라우터처럼 연결하여 서버로 사용할 수 있습니다).
내 질문은 다음과 같습니다.
웹페이지를 로드하는 데 예상보다 시간이 오래 걸립니다. (약 4초)
웹을 최적화하는 데 시간을 투자하여 응답 시간을 약 2초로 줄였으나 웹 애플리케이션의 경우 여전히 매우 느립니다. Linux 시스템에서 실패 지점을 찾는 가장 좋은 방법이 무엇인지 궁금합니다. 내 시스템을 모니터링하고 무선 네트워크(대역폭), 처리, mysql 데이터베이스, PHP, 메모리에 문제가 있는지 확인하고 싶습니다. 답을 찾는 가장 좋은 방법은 무엇입니까?
존재하는 모든 문제를 수정하고 최적화할 수 있지만 먼저 병목 현상을 찾아야 합니다.
답변1
Linux 시스템의 문제를 디버깅하려는 경우 다음 도구를 사용하여 실시간으로 높은 수준의 개요를 얻을 수 있습니다.
htop
CPU 및 메모리 사용량 개요 보기iotop
일반 I/O 처리량 보기(루트로 실행해야 함 - "sudo
")nethogs
네트워크 I/O를 자세히 봅니다(루트이기도 함).
다른 명령도 유용하지만 실시간은 아닙니다.
netstat
(나는 선호한다sudo netstat -tunap
) UDP 및 TCP 연결과 연결 상태 표시ls -l /proc/123/fd
프로세스 #123에 대해 열린 파일 설명자를 표시합니다(fd는 모든 유형의 I/O에 사용됨)
mysql에 관해서도 수시로 진공 실행을 고려하고 어떤 인덱스를 어디에서 사용하고 있는지 분석해야 합니다. 또한 JOIN
s 또는 후속 SELECT
s가 쉽게 병목 현상을 일으킬 수 있다는 점을 알아야 합니다 .
위의 도구 세트는 매우 낮은 수준이라는 점을 덧붙여야 합니다. 웹 애플리케이션을 분석/최적화할 때 나는 일반적으로 운영 체제와 독립적인 고급 도구를 사용하는 것을 선호합니다. 로그 파일은 유용하므로 타임스탬프를 기록하는 데 사용하는 것이 좋습니다 print
. 이렇게 하면 함수의 어느 부분을 실행하는 데 시간이 걸리는지 확인할 수 있습니다. 일반적으로 I/O 작업이 가장 느립니다.
나는 또한 정말 사용하는 것이 좋습니다webtest.org, 브라우저에서 들어오는 모든 HTTP 요청에 대한 멋진 폭포 차트를 제공합니다.