线上问题排查--线程栈

> jstack   java进程号

一、查看死循环

第一种方法(高效找出对应的线程):top+线程堆栈方法

1、jps找出java对应的进程号

2、top -p 进程号,展示这个java进程对应的所有线程号

3、shift+h,对所有线程进程CPU使用率排序

4、pid=30712,即为消耗cpu最多的线程,可能死循环

5、jstack+进程号,找到nid=30712的线程号,看看这个线程是干嘛的,具体代码是什么

 

第二种方法:

间隔一段时间多次打印jstack日志,发现同一个线程一直在执行,我们认为此线程阻塞或者是死循环

 

二、死锁,jstack  进程号,如果有死锁情况,会直接显示死锁deadlock

 

三、阻塞:大量线程等待同一个资源

1、并发高,连接池配置太少

2、频繁打印日志,等待IO操作

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值