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 2024-03-27 17:47 HeavenTang 阅读(132) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix