普通linux服務器定位過程:
- 服務器內部執行 top 命令查看,定位到占用CPU高的進程ID
- 使用 top -Hp <PID> 定位到占用CPU高的線程 THREADID。
- 使用 jstack <THREADID> > jstack.txt 將線程棧打印輸出
- 將占用CPU高的線程ID使用 printf '%x\n' <線程ID> 命令將線程ID轉換為十六進制形式
- 假設線程ID為133,則得到十六進制85。在jstack.txt文件中定位到 nid=0x85的位置,該位置即為占用CPU高線程的執行棧信息
- 進行問題定位并解決
k8s pod、普通服務器定位過程:
- 運行arthas jar應用服務
- 常用命令:dashboard、thread -n 5
- thead -n 5 基本能定位到線程棧信息了
- 進行問題定位并解決