普通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 基本能定位到线程栈信息了
- 进行问题定位并解决