
Ubuntu 14.04 digital Ocean vps에서 laravel 애플리케이션을 실행 중이고 New Relic을 사용하여 서버를 모니터링하고 있습니다.
CPU 사용량이 80%를 넘었다는 이메일 알림을 받았습니다. New Relic에 로그인했는데 이제 18시간 동안 CPU 사용량이 99%로 표시됩니다. 하지만 쉘에 로그인하고 'top'을 실행하면 프로세스의 CPU 사용량의 합이 10%도 되지 않습니다.
무엇이 잘못되었을 수 있나요? 실제 사용법을 확인하기 위해 실행할 수 있는 다른 명령은 무엇이며 이 명령을 그렇게 많이 사용하는 것은 무엇입니까? (어쩌면 애플리케이션의 무한 루프일까요?)
이것은 내 htop 결과입니다.
그리고 이것은 Shift+K 이후의 htop입니다.
모든 링크나 도움을 주시면 감사하겠습니다.
답변1
무슨 일이 일어나고 있는지 잘 모르겠지만 개별 프로세스의 %CPU 열이 사용자가 생각하는 내용을 알려주지 않는 것 같습니다. top의 맨페이지에서:
k: %CPU -- CPU usage
The task’s share of the elapsed CPU time since the last screen update,
expressed as a percentage of total CPU time.
4초마다 새로고침한다고 가정해 보겠습니다. 2초 동안 소비된 총 CPU 시간은 6%입니다.그 4초 동안. 하지만 그 단 몇 초 만에 CPU 시간의 24%를 사용했다고 가정해 보겠습니다. 나는 이것이 일어나고 있다고 말하는 것이 아니지만 그럴 수 있습니다.
나는 top
여기에 만족합니다. CPU 사용량을 CPU별로, 그리고 user
I /O에서 , sys
, nice
, idle
, 서비스 하드웨어 및 소프트웨어 인터럽트(hi, si)별로 분류한 것을 볼 수 있습니다. wait
아마 이것도 들어갈 수 있을 것 같아요 htop
. 20% 이상 유휴 상태인 CPU 1개가 있는 한, 팬이 방해하지 않는 한 실제로 걱정할 것은 거의 없습니다. 그러나 걱정된다면 %wait 및 %hi/%si가 매우 높은 상황일 수 있습니다. 이 경우 개별 프로세스의 CPU 사용량이 높지 않고 오히려 어떤 이유로 커널이 매우 바쁜 상태일 수 있습니다.
답변2
비슷한 문제가 있었고 백그라운드에서 TOP 명령을 실행하고 txt 파일로 리디렉션했습니다.
상단 > 상단.txt &
감사합니다. 어떤 프로세스가 CPU를 낭비하는지 알 수 있습니다.
답변3
몇 가지 옵션이 있습니다. 내가 선호하는 프로그램은 htop
일반적으로 기본적으로 설치되지 않지만 거의 모든 배포판에서 사용할 수 있는 프로그램입니다. 와 동일한 정보를 제공 top
하지만 훨씬 더 풍부한 기능 세트를 제공합니다. 대화식으로 문제 프로세스를 찾는 데는 좋지만 스크립팅에는 적합하지 않습니다. 모니터링 스크립트에 무언가를 통합하고 싶다면 명령이 ps -eo pid,pcpu,comm
도움이 될 것입니다. PID 및 CPU 사용량과 함께 현재 프로세스를 모두 구문 분석하기 쉬운 형식으로 인쇄합니다.
답변4
무엇이 잘못되었을 수 있나요?
첫 번째는 많은 메모리를 선호하는 Laravel을 사용하고 있고 공연 시간이 절반도 안 된다는 것입니다. 지원되지 않는 운영 체제에서 실행하고 있습니다. 이는 좋지 않습니다. 그리고 나머지 스택(웹 서버, PHP SAPI, PHP 버전)에 대해서는 알려주지 않았습니다.