CPU飚高问题排查基本步骤

Posted laowz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU飚高问题排查基本步骤相关的知识,希望对你有一定的参考价值。

CPU 飚高
一般是死循环或者死锁问题导致。

1. 通过 top  命令找到 CPU 消耗最高的进程,并记住进程 ID {pid}。
top -M -n 2 -d 3 >{pid}/top.txt 查看top

2. 再次通过 top -Hp  {pid} 找到 CPU 消耗最高的线程 ID,并记住线程 ID(十进制).


3.通过 JDK 提供的 jstack 工具 dump 线程堆栈信息到指定文件中。
jstack {pid} >{pid}/jstack_1.txt 一次堆栈快照 备用

jstack {pid} >{pid}/jstack_2.txt 两次堆栈快照 备用

由于刚刚的线程 ID 是十进制的,而堆栈信息中的线程 ID 是16进制的,因此我们需要将10进制的转换成16进制的,并用这个线程 ID 在堆栈中查找。
使用 printf "%x " [十进制数字] ,可以将10进制转换成16进制。
通过刚刚转换的16进制数字从堆栈信息里找到对应的线程堆栈。就可以从该堆栈中看出端倪。

















以上是关于CPU飚高问题排查基本步骤的主要内容,如果未能解决你的问题,请参考以下文章

JVM 线上故障排查基本操作--CPU飙高

JVM 线上故障排查基本操作

Cpu飚高show-busy-java-threads一件脚本排查与Arthas线上诊断工具排查实战

JVM 线上故障排查基本操作

JVM 线上故障排查基本操作

关于JVM线上故障排查基本操作