说明:服务器报警提示cpu资源占用过高,本文章讲解如何排查cpu被占用资源过高的原因
1.输入 top 命令,找到占用 CPU 最高的进程
如下图,看到占用最高的cpu的进程是java,PID为92129
2.输入top -Hp 92129
如下图,查看指定进程内线程信息,其中 92129是第一步java进程的 pid
3.找到上图占用最高的线程 pid 为 92156 ,然后转成 十六进 ,使用公式转换:printf "%x\n" 92156
如下图, 打印出来:167fc
4.输入jstack 92129 > x.txt
解释:92129 是步骤1中java进程的PID,使用 jstack 命令分析进程状态,为了方便查询,将分析结果输入到x.txt文件中
(1)打开 x.txt 文件,在文件中查询 步骤2 转换的十六进制数:167fc
(2)找到非 Jdk 代码,也是自己写的代码,就能找到问题的根源了