linux 线程问题,Linux Java线程100%的问题定位方法

一、背景

互联网发展的今天,很多问题都会在生产中遇到,假如某天发现系统资源中cpu占用100%,一直居高不下,那么就要进行问题查询了。

二、解决思路

1、查看那个Java进程占用最多,top命令

[root@iZ25fdlnov1Z test]# top -H

a0d6abdf2b267e35e1ef3a526e8527fd.png

2、可以明显看到PID为29003的java进程占用cup最高,已占用了95.5%了,可根据进程号进一步查看该进程的线程情况。显示该进程中每个线程的CPU资源消耗情况。

[root@QW121 test]# top -H -p 29003

5424849571cefb24c67daff8127bc81f.png

3、找到占用最高的PID29003后,用jstack打印线程栈信息到stack文件中,如下图:

[root@iZ25fdlnov1Z atm]# jstack -l -F 29003 >29003.stack

65d56ffb8948ed46b80f1a1a978104fd.png

此时,已经将线程栈信息打印进29003.stack文件中了,可以利用cat等命令查看该文件。

4、找到29003的前后20行信息(20行不够可以50行或者更多),并展示出来:

[root@iZ123 test]# cat 29003.stack  |grep -A 20 '29003'

a86d94c1fd30be2ea4e4e46be98a3f6b.png

如上图所示,可准确定位到具体哪个类中的那个方法导致的该问题的出现,然后根据代码再一一解决。

0b1331709591d260c1c78e86d0c51c18.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值