CPU 사용량은 100%이지만 top에는 이를 사용하는 프로세스가 표시되지 않습니다.

CPU 사용량은 100%이지만 top에는 이를 사용하는 프로세스가 표시되지 않습니다.

첫째, 프로세스 목록을 저장하는 것을 잊었습니다. 서버를 다시 시작해야 해서 많은 정보를 제공할 수 없었습니다.

작은 VPS가 있습니다. 상단과 제어판 그래프의 CPU 사용량은 모두 100%이며 하루 종일 높았습니다(오늘 아침에 웹 서버가 요청에 응답하지 않는 것을 발견했습니다). VPS를 다시 시작한 후 CPU가 4% 미만으로 돌아갑니다(저만 웹서버를 사용하므로 실제 부하가 없습니다).

이유는 무엇입니까? 이런 일이 다시 발생하면 어떻게 조사해야 합니까?

답변1

커널 프로세스, 드라이버 또는 인터럽트에서 CPU가 소비될 수 있습니다.

이것은 답이 아니라 문제를 해결하는 방법입니다. 이 방법의 일부 세부 사항은 Linux에만 적용됩니다. sysstataka 패키지를 설치 sar하고 sar-collection crontab을 수정하거나 추가합니다(RedHat 시스템에서 /etc/cron.d/sysstat):

* * * * * root /usr/lib64/sa/sa1 -L -F -S XALL 10 6

한 달에 3GB 이상을 축적할 수 있도록 준비하세요 /var/lib/sa. 귀하의 버전이 둘 다 지원하지 않는 경우 -L다음 -Fcron 항목을 추가하십시오.

 57 23 * * * root rm -f /var/log/sa/sa`date --date=tomorrow +\%d`

하루 후, sar -f /var/log/sa/saXX -CXX를 어제의 날짜로 선행하는 0으로 시작하는 정수(즉, 01, 02, ... 10, 11 ... 31)로 사용합니다. CPU가 높은 기간을 찾으면 해당 기간에 대한 sar 보고서를 확인할 수 있습니다.

  • 방해하다( -I ALL)
  • 네트워크 사용량( -n DEV)
  • 디스크 I/O( -b)

CPU가 10시 15분에서 10시 18분 사이에 점프하는 것을 본다고 가정해 보겠습니다. 다음과 같이 현재 날짜(05)에 sar를 실행합니다.

sar -f /var/log/sa/sa05 -s 10:14:00 -e 10:19:00 -I ALL -n DEV -b | less

각 측면에 1분씩 추가하여 시청 중뿐만 아니라 전/중/후를 시청하실 수 있습니다.

여전히 아무것도 표시되지 않고 다른 sar 매개변수를 살펴봤지만아직아무것도 볼 수 없습니다. cron에 다음을 추가해 보세요.

* * * * * { date; /bin/ps -A --sort tty,comm,pid -ww -o pgrp:8,tty:7,pid,c,pmem:5,rss:8,sz:8,size:8=TSIZE,vsz:8,nlwp,lstart,args ;} >>/var/log/procscan

이 파일은 매우 커질 수 있으므로 다음 날 파일을 회전하거나 cronjob을 비활성화해야 합니다. 하지만 이 출력에서 ​​범인을 찾을 수 있습니다.

이 cronjob의 일부 문제를 해결하기 위해 래퍼 스크립트와 지원 파일 세트를 만들어 github에 올렸습니다. 당신은 그들을 찾을 수 있습니다여기 (github의 프로젝트 링크)

관련 정보