CPU过高问题排查

1、使用top看一下

如下图所示,发现%CPU 达到105.6 CPU 占用率很高,虚拟内存占用也很多

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                 
20513 wuhuiqi+  20   0 35.962g 1.190g  13164 S 105.6  0.9  61405:41 java                                    
10711 fifth     20   0 13.269g 1.293g  14368 S   2.3  1.0   2105:26 java                                    
2、查看指定进程相关的线程

top -p PID -H 来查询占用CPU 占用很多的线程

top -p 20513 -H

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                  
20791 wuhuiqi+  20   0 35.962g 1.190g  13164 R 99.3  0.9  57308:18 java                                     
20721 wuhuiqi+  20   0 35.962g 1.190g  13164 S  0.7  0.9 171:31.55 java                                     
20729 wuhuiqi+  20   0 35.962g 1.190g  13164 S  0.7  0.9 171:12.99 java                                     
20731 wuhuiqi+  20   0 35.962g 1.190g  13164 S  0.7  0.9 171:06.91 java                                     
20714 wuhuiqi+  20   0 35.962g 1.190g  13164 S  0.3  0.9 170:57.62 java                                     
20717 wuhuiqi+  20   0 35.962g 1.190g  13164 S  0.3  0.9 171:15.67 java                                     
20718 wuhuiqi+  20   0 35.962g 1.190g  13164 S  0.3  0.9 171:12.73 java   
3、进制转换

将相关的消耗CPU 多的线程的ID 转为16进制

Printf “%x\n” 20791 
“5137n”
4、jstack查看进程信息

jstack 20513 | grep 5137n

jstack pid | grep  线程Id16进制  

然后根据线程信息进行分析即可

你可能感兴趣的:(CPU过高问题排查)