Java 应用线上问题排查思路、工具小结

  1. ssh ip 连接上远程服务器

  2. top 查看占比较高的java进程号 如12816

  3. top -Hp pid可以查看某个进程的线程信息
    -H 显示线程信息,-p指定pid
    如:top -Hp 12816
    在这里插入图片描述

  4. 找到线程12817, 进入python, hex(12817)查看16进制0x3211

  5. 执行 jstack 12816 | grep 0x3211 -A 30 找到该线程堆栈信息
    在这里插入图片描述

  6. jstack信息
    jstack 线程ID 可以查看某个线程的堆栈情况,特别对于hung挂死的线程,可以使用选项-F强制打印dump信息jstack -F pid

jstack定义: jstack是java虚拟机自带的一种堆栈跟踪工具。用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。

PS : 在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性。也就是多进行几次线程快照,观察变化,查看问题所在。

Reference

Java 应用线上问题排查思路、工具小结:
https://juejin.cn/post/6844904155232862221

使用jstack命令dump线程信息: jstack pid > test.txt
https://blog.csdn.net/qq_36317804/article/details/89522433

三个实例演示 Java Thread Dump 日志分析:
https://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值