思路:
1.定位进程导致CPU过载
2.线程导致CPU过载
3.代码导致CPU过载
开始操作:
执行top -c ,显示进程运行信息列表
键入P (大写p),进程按照CPU使用率排序
top -Hp 3406 ,显示一个进程的线程运行信息列表
键入P (大写p),线程按照CPU使用率排序

执行: printf “%x\n” 5956

16进制,是因为堆栈里,线程id是用16进制表示的。
执行查看堆栈信息:jstack 3406| grep ‘1744’ -C5 --color
通过线程id,过滤得到线程堆栈

找到了耗CPU高的线程对应的线程名称,以及看到了该线程正在执行代码的堆栈。
本文介绍了一种排查CPU过载的方法,包括定位导致CPU过载的进程、线程及代码,通过使用top命令和jstack工具,具体展示了如何找出耗CPU高的线程及其执行的代码堆栈。

3万+

被折叠的 条评论
为什么被折叠?



