1. 程式人生 > >CPU飈高問題排查基本步驟

CPU飈高問題排查基本步驟

文件 txt 進程 十進制 文件中 tac jstack dump 轉換成

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\n" [十進制數字] ,可以將10進制轉換成16進制。
通過剛剛轉換的16進制數字從堆棧信息裏找到對應的線程堆棧。就可以從該堆棧中看出端倪。

CPU飈高問題排查基本步驟