HeavenTang

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Java进程假死排查 《二》

在使用docker部署的项目可以参考 第一篇文章:
https://www.cnblogs.com/heavenTang/p/18027006

如果是非docker部署的,那么往下看:
步骤1. top
输入 top 命令,找到占用 CPU 最高的进程。按 Shift+P 键排序:

可以看到 CPU 占用最高的 pid 是 92129 。

步骤2. top -Hp pid

查看指定进程内线程信息,其中 pid 是第一步的 pid 。

top -Hp 92129

找到占用最高的线程 pid 为 92156 ,然后转成 十六进 ,使用公式转换:

printf'%x'92156

输出结果是: 167fc

步骤3. jstack 命令

使用 jstack 命令分析进程状态,为了方便查询,将分析结果输入到一个文件中, jstack pid > x.txt 其中 pid 是步骤1的进程号。

jstack 92129 > x.txt

打开 x.txt 文件,在文件中查询 步骤2 转换的十六进制数:

找到非 Jdk 代码,也是自己写的代码,就能找到问题的根源了。

总结

top 找到进程号

top -Hp 进程号,找到线程号,线程转成十六进制。

jstack pid 分析。根据十六进制查询,找到问题代码位置。

问题: 使用jstack 可能会报错如下:

这种情况有2种:


posted on   HeavenTang  阅读(132)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示