Linux服务器上定位哪行代码导致CPU飙高

Linux 服务器上的 Java 程序 CPU 持续飙高,如何排查?

第一步 首先使用 top 命令查看所有进程 top

1
top

第二步 定位Java进程中 CPU 最高的线程

1
top -Hp pid

获取线程id

第三步 将线程ID转换成十六进制

1
printf "0x%x" {上一步中获取的线程id}

第四步 使用 jstack 工具跟踪堆栈定位代码

1
jstack {pid} | grep {第三步中获取到的线程id的十六进制表示} -A 5

完~