고부하의 근본 원인 분석

고부하의 근본 원인 분석

이는 vmware 5.5에서 실행되는 5.7 32비트 가상 머신입니다. 주인. 로드 평균값은 높아지고 CPU 사용량은 낮아지는 것을 볼 수 있습니다. 가상 머신에는 4개의 vCPU가 있으며 로드는 때때로 20에 도달합니다.

vmstat를 실행하면 "r" 열에 더 높은 값이 표시됩니다.

문제는 커널 실행 대기열에서 프로세스를 어떻게 찾느냐는 것입니다.

ps r -A와 같이 인터넷에서 찾은 ps 조합을 시도했지만 운이 없었습니다.

vmstat 출력:

[ ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 9  0      8 822516 322880 1593592    0    0     1    65    9    6  1  1 98  0  0
 7  0      8 823136 322880 1593584    0    0     0     0 9387 97411  8  9 84  0  0
53  0      8 823508 322880 1593588    0    0     0   236 8332 108913  9 12 79  0  0
64  0      8 818424 322888 1597548    0    0     0   116 9027 140988 10 11 79  0  0
69  0      8 820284 322888 1597548    0    0     0     0 9095 128715  8 10 83  0  0
64  0      8 820284 322888 1597692    0    0     0     0 8701 119305  9 11 80  0  0
 3  0      8 819540 322888 1597688    0    0     0  4704 9531 112734  8  8 84  0  0
81  0      8 818052 322888 1599452    0    0     0   224 8324 102409 10 13 77  0  0
 8  0      8 816192 322888 1601788    0    0     0  3240 9181 98478  9 11 80  0  0
 7  0      8 815076 322888 1601872    0    0     0     0 9250 104422 10  9 81  0  0 mpstat 1 10
06:04:03 PM  CPU    usr     nice    sys     iowait  irq     soft    steal   guest  idle
06:04:04 PM  all    9.32    0.00    8.82    0.00    0.25    4.03    0.00    0.00   77.58
06:04:05 PM  all    9.85    0.00    8.84    0.00    0.25    4.29    0.00    0.00   76.77
06:04:06 PM  all    8.29    0.00    5.78    0.00    0.50    4.77    0.00    0.00   80.65
06:04:07 PM  all    9.82    0.00    7.81    0.00    0.25    4.28    0.00    0.00   77.83
06:04:08 PM  all    8.84    0.00    5.30    0.00    0.25    4.29    0.00    0.00   81.31
06:04:09 PM  all   10.05    0.00    9.05    0.00    0.50    4.02    0.00    0.00   76.38
06:04:10 PM  all    9.60    0.00    7.32    0.00    0.51    4.04    0.00    0.00   78.54
06:04:11 PM  all    8.33    0.00    5.81    0.00    0.25    4.29    0.00    0.00   81.31
06:04:12 PM  all    9.57    0.00    7.05    0.00    0.25    4.03    0.00    0.00   79.09
06:04:13 PM  all    7.83    0.00    5.05    0.00    0.25    3.79    0.00    0.00   83.08
Average:     all    9.15    0.00    7.08    0.00    0.33    4.18    0.00    0.00   79.25

답변1

대개로드 평균은 CPU가 필요한 일이 많기 때문에 발생하지만 항상 그런 것은 아닙니다. 일반적인 원인은 IO(디스크 또는 네트워크)를 기다리는 프로세스입니다.

실행 ps -e v해 보고 프로세스 상태 플래그를 찾아보세요.

state    The state is given by a sequence of characters, for example, "RWNA". The      first character indicates the run state of the process:
D    Marks a process in disk (or other short term, uninterruptible) wait.
I    Marks a process that is idle (sleeping for longer than about 20 seconds).  
L    Marks a process that is waiting to acquire a lock.
R    Marks a runnable process.
S    Marks a process that is sleeping for less than about 20 seconds.
T    Marks a stopped process.
W    Marks an idle interrupt thread.
Z    Marks a dead process (a "zombie").

이는 ps맨페이지에 있으므로 맨페이지에서 자세한 내용을 찾을 수 있으며 R프로세스 D가 특히 흥미로울 수 있습니다.

답변2

top은 어떤 프로세스가 시스템 리소스를 사용하고 있는지 찾는 데 내가 아는 최고의 도구입니다.

내 컴퓨터에서:

$ top
top - 14:14:00 up 1 day,  2:00,  4 users,  load average: 0.24, 0.23, 0.24
Tasks: 235 total,   3 running, 232 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  0.5 sy,  0.0 ni, 96.2 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   7870416 total,  7097428 used,   772988 free,   346524 buffers
KiB Swap:  8081404 total,        0 used,  8081404 free.  3621000 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                
 4669 postgres  20   0 2037632  63924  37168 S  19.3  0.8   0:29.23 postgres                                                               
 4671 postgres  20   0 2037592  64476  38532 S  12.8  0.8   0:25.71 postgres                                                               
 4672 postgres  20   0 2037452  62992  38004 S  12.8  0.8   0:25.36 postgres                                                               
 1324 root      20   0  766268 212364 173952 S   6.4  2.7  22:34.20 Xorg                                                                   
 3804 ybounya   20   0  656468  23560  13244 S   6.4  0.3   1:44.77 gnome-terminal                                                         

따라서 현재 PID 4669(postgres)는 19.3%를 사용하고 있고, 4671은 12.6%를 사용하고 있는 것을 알 수 있습니다. 메모리 및 기타 중요한 리소스를 볼 수도 있습니다.

관련 정보