歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux Java線程100%的問題定位方法

Linux Java線程100%的問題定位方法

日期:2017/3/1 9:05:38   编辑:Linux編程

一、背景

互聯網發展的今天,很多問題都會在生產中遇到,假如某天發現系統資源中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'

如上圖所示,可准確定位到具體哪個類中的那個方法導致的該問題的出現,然後根據代碼再一一解決。

Copyright © Linux教程網 All Rights Reserved