리눅스 CPU 사용 및 프로세스 실행 히스토리


37

CPU 사용률이 가장 높은 프로세스를 확인할 수있는 방법이 있습니까?

CPU 사용률이 100 %에 달하는 AMAZON EC2 Linux가 있으며 시스템을 재부팅합니다. SSH를 통해 로그인 할 수도 없습니다 (퍼티 사용).

CPU 사용량이 많은 원인과 그 원인을 확인할 수있는 방법이 있습니까?

나는 알고 sar있고 top명령하지만 어디에서나 프로세스 실행 기록을 찾을 수 없습니다. 다음은 Amazon EC2 모니터링 도구의 이미지이지만 어떤 프로세스로 인해 발생했는지 알고 싶습니다.

여기에 이미지 설명을 입력하십시오

나도 시도 ps -eo pcpu,args | sort -k 1 -r | head -100했지만 그렇게 높은 CPU 사용량을 찾는 것은 운이 없다.

답변:


34

이를 수행 할 수있는 몇 가지 방법이 있습니다. 런 어웨이 시나리오에서 많은 프로세스가 전적으로 가능하다는 것을 유념하십시오.

첫 번째 방법은 백그라운드에서 실행되고 데이터를 생성하도록 pidstat를 설정하는 것입니다.

pidstat -u 600 >/var/log/pidstats.log & disown $!

이렇게하면 10 분 간격으로 시스템 실행에 대한 매우 자세한 전망을 얻을 수 있습니다. 가장 가치 있고 신뢰할 수있는 데이터를 생성하기 때문에 이것이 첫 번째 포트입니다.

상자가 런 어웨이 CPU 루프에 들어가고 큰 부하를 생성하는 경우 주로 문제가 있습니다. 실제 프로세스가로드 중에 적시에 실행되도록 보장하지는 않으므로 실제로 출력을 놓칠 수 있습니다 !

이를 찾는 두 번째 방법은 프로세스 계정을 활성화하는 것입니다. 아마도 장기적인 옵션 일 것입니다.

accton on

이렇게하면 프로세스 계정이 활성화됩니다 (아직 추가하지 않은 경우). 이전에 실행되지 않은 경우 실행 시간이 필요합니다.

24 시간 동안 실행 된 후 다음과 같은 명령을 실행할 수 있습니다 (이와 같이 출력이 생성됨)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

열은 다음과 같이 정렬됩니다.

  1. 통화 수
  2. 통화 비율
  3. 이 유형의 모든 프로세스에 소요 된 실시간 시간입니다.
  4. 백분율.
  5. 사용자 CPU 시간
  6. 백분율
  7. 시스템 CPU 시간
  8. 평균 IO 호출
  9. 백분율
  10. 명령 이름

찾고자하는 것은 가장 많은 사용자 / 시스템 CPU 시간을 생성하는 프로세스 유형입니다.

이렇게하면 데이터가 총 CPU 시간 (맨 위 행)과 해당 CPU 시간이 분할 된 방식으로 분류됩니다. 프로세스 계정은 프로세스가 생성 될 때만 올바르게 계정되므로 모든 서비스를 고려하도록 시스템을 활성화 한 후 시스템을 다시 시작하는 것이 가장 좋습니다.

이것은 실제로이 문제의 원인이 될 수있는 프로세스가 무엇인지에 대한 확실한 아이디어를 제공하지는 않지만 좋은 느낌을 줄 수 있습니다. 24 시간 스냅 샷일 수 있으므로 결과가 왜곡 될 수 있으므로 염두에 두어야합니다. 또한 커널 기능이므로 항상 로그해야하며 pidstat와 달리로드가 많은 경우에도 항상 출력을 생성합니다.

마지막으로 사용할 수있는 옵션은 프로세스 계정을 사용하므로 위와 같이 설정할 수 있지만 "lastcomm"프로그램을 사용하여 각 프로세스의 CPU 통계와 함께 문제가 발생한 시간 동안 실행 된 일부 프로세스 통계를 생성합니다.

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

문제의 원인에 대한 힌트도 제공 될 수 있습니다.


매우 훌륭하고 자세한 답변, 잘하셨습니다!
Bart De Vos

2
MIfe, 당신은 그것을 시도하지 꼭대기에 사용하지 않은! pidstat와 동일한 정보를 수집하지만 대화식 탐색에 훨씬 적합한 인터페이스로 제공합니다. sar 스타일 보고서를 선호하는 경우 atopsar 명령도 있습니다.
sciurus

18

Atop 은 프로세스 수준에 대한 드릴 다운을보고 특히 기본적으로이 데이터를 28 일 동안 보관하는 데 유용한 데몬입니다. 멋진 실시간 모니터링 인터페이스를 제공하는 것 외에도 로그 파일을 열고 단계별로 지정할 수 있습니다.

기사 는 기능에 대한 아이디어를 제공하며 맨 페이지 에서 더 많은 것을 찾을 수 있습니다 .

정말 훌륭한 소프트웨어입니다.


3

psmonmonit 과 같은 프로그램이 도움이 될 수 있습니다. 시스템에서 실행중인 프로세스를 모니터링 할 수 있으며 임계 값 (CPU 사용량, 메모리 사용량 ...)이 초과되면 진행 상황에 대한 이메일 보고서를 보내도록 설정할 수 있습니다.

오작동하는 프로세스를 자동으로 다시 시작할 수도 있습니다.


0

하나의 솔루션은 1 분 cron 또는 절전 루프를 통해 실행되는 스크립트를 작성하고 관련 출력 (dmesg, pstree -pa 및 ps aux, 아마도 vmstat) 특정 한계 이상의 부하 평균을 찾는 순간 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.