线上CUP负载过高排查方法

 
1.top命令查看线程占据的CPU

 

 

注意:上面行的cpu是多个内核的平均CPU,不可能超过100%
下面的cpu是每个进程实际占用的cpu,可能超过100%
备注:查看多个内核cpu,只需要在输入top后,输入1
 
2.查看进程下每个线程的资源使用情况
top -Hp pid(进程最高的那个进程ID)
例如:top -Hp 6401 可以看到每个线程占据的CPU
 
3.查看线程详情
比如资源占用最高的那个线程ID是6461
 
printf %x 6461 :查看线程ID 6461对应的16进制(堆栈日志中线程号是用16进制标记的)
 

 

jstack 6401 |grep 193d -C 30 :193d是6461线程ID对应点的16进制
从堆栈快照 中 查看线程的详细状态信息 

jstack -l 6401 > dump 将堆栈信息输出到一个文件中 ,后续可以用工具解析该堆栈快照

 

posted @ 2020-07-24 08:28  HappyCowboy  阅读(412)  评论(0编辑  收藏  举报