线程栈分析

栈深度排序下,从深度高的往下看,深度一样的一般干的事情一样的,看一个就可以了。然后看以下几种情况:

①大量线程卡在某个地方,可以配合UE进行统计;

②关注一些线程可能在多个线程栈文件都存在,可能这些线程卡了很久了。

1. 所有执行代码是通过线程的,线程dump是某一时刻的镜像、行为。

2. 通过javacore可以分析服务卡问题。

3. 通过javacore可以分析高cpu问题。

4. 通过javacore可以分析压力测试瓶颈。

5. 通过javacore可以分析死锁等问题。

6. 排查以上的问题困难的地方是一部分是业务代码,一部分是框架底层代码。项目组人员可能非常能了解自己写的业务代码,但是不清楚底层的实现。

  而架构师比较了解框架,但是不了解业务的代码。通过线程栈是快速沟通发现问题。javacore是一个非常便利的排查工具。

7. 一个程序员从javacore文件能看出多少信息,可以体现这个程序员的水平。

8. 工具只是提供随利的手段,直接要分析依赖对java基础、框架、关建组件的熟悉情况。

9. 生成javacore

使用jstack命令+进程号生成,建议每隔3到5秒执行一次,一共生成五个线程栈文件。如下所示,8075为应用的进程号。

也可以使用kill -3 8075来生成,不过这时线程栈信息将会输出到服务进程日志中。

 jstack 8075 >javacore_1.txt    

 jstack 8075 >javacore_2.txt    

 jstack 8075 >javacore_3.txt    

 jstack 8075 >javacore_4.txt    

 jstack 8075 >javacore_5.txt   

 jstack  -F  8075

 jstack  -l

1.查询应用进程中的高cpu线程     top -Hp 进程号   

2. 线程号转十六进程                    printf "%x\n"  线程号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值