show-busy-java-threads

排查 Java 进程占用 CPU 高的堆栈

更多实用脚本参考

临时到服务器上排查 Java 进程占用 CPU 高的原因, 步骤如下:

  1. 查询 CPU 占用高的进程 PID 为 X
  2. 查询进程 X 中的线程资源占用情况
  3. 找到占用量最高的线程 PID 为 Y
  4. 计算 Y 对应的十六进制为 Z
  5. 查询进程 X 中各线程的调用栈
  6. 定位到 Z 所在的线程堆栈
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# top 命令默认是按 CPU 的占用量从高到低排序
top
# 查询占用高的进程 X 中的线程资源占用情况
top -Hp X
# 占用量最高的线程 PID 为 Y
# 计算 Y 对应的十六进制为 Z
printf "%x\n" Y

# 查询进程中各线程的调用栈并定位到 Z
jstack X
使用 Hugo 构建
主题 StackJimmy 设计