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

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

二、解决思路

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

[root@iZ25fdlnov1Z test]# top -H

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

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

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

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

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

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

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/09effcbb3dc624ce2bb0d2812b55d7c7.html