cpu過高問題排查步驟以及命令
1.通過 top 命令找到 CPU 消耗最高的進程,並記住PID[進程ID]。
2.通過 top -Hp [PID] 找到 CPU 消耗最高的[線程ID],並記住[線程ID].
3.線程ID是十進制的,而堆棧信息中的線程ID 是16進制的,因此我們需要將10進制的轉換成16進制的,並用這個線程ID在堆棧中查找。用 printf "%x\n" [十進制數字] ,將10進制轉換成16進制。
4.通過 jstack 工具 dump 線程堆棧信息到指定文件中。具體命令:jstack -l [進程ID] > jstack.log
5.根據剛剛轉換的16進制數字從堆棧信息裏找到對應的線程堆棧。就可以從該堆棧中看出端倪。也可以使用命令:
less 8177.txt |grep -C30 [16進制]