场景分析:
生产环境下 Java 进程高 CPU 占用故障排查
解决过程:
一、根据 top 命令,发现 PID 为 8540 的 Java 进程占用 CPU 高达 300%,出现故障。
top | grep Java
二、找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照 CPU 占用高的线程排序:
ps -mp {pid} -o THREAD,tid,time | sort –rn
三、将需要的线程 TID 转换为 16 进制格式
printf "%x\n“{tid}
四、 使用 jstack 命令打印出该进程下面的此线程的堆栈信息:
sudo jstack {pid} | grep -A 5 {16 进制的 tid}
五、导出堆栈信息
Jstack {pid} | grep –A 5 {16 进制的 tid} > file.txt