排查生产服务器CPU飙高问题
1、通过ps ux 排查哪些进程cpu占用率高
top
2、查出最耗CPU线程 top -Hp pid
top -Hp 29698
3、通过线程ID转换16进制,printf "%x\n" 29698
29698里最高的线程为1213: printf "%x\n" 1213
(保存为54ee)
4、追踪线程内部,查看load过高原因。通过命令:jstack 29698 >>/usr/2文件,将线程堆里面的信息全部保存下来
./jdk1.8.0_192/bin/jstack 29698 >> /tmp/29698.txt
5、通过转换的16进制就可以去“29698.txt”里面查找对应的线程
./jdk1.8.0_192/bin/jstack 29698 | grep 54ee
"ConsumerFetcherThread-marketing.push_c_cnsz141742-1609313734042-cdaaf141-0-48" #116 prio=5 os_prio=0 tid=0x00007f7eac02a000 nid=0x7ab8 runnable [0x00007f7e85db3000]
less 29698.txt
根据nid查询对应的线程
6、通过线程ID找出日志
"pool-4-thread-1" #226 prio=5 os_prio=0 tid=0x00007f22dc0ac800 nid=0x175e runnable [0x00007f22e5376000]