
저는 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 열은 그것이 무엇을 의미한다고 생각하는지 알려주지 않는 것 같습니다. 상단의 맨페이지에서:
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초 안에. 그런데 1초 동안 갑자기 CPU 시간의 24%를 사용한다고 가정해 보겠습니다. 나는 이것이 일어나고 있다고 말하는 것이 아니지만 일어날 수 있습니다.
나는 top
여기에 매우 만족합니다. CPU 사용량이 CPU별로 분류되고, 더 나아가 user
, sys
, nice
, idle
, wait
(I/O에서) 하드웨어 및 소프트웨어 인터럽트 서비스(hi si)로 분류되는 것을 볼 수 있습니다. 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 버전)에 대해서는 아직 알려주지 않았습니다.