JAVA进程高CPU占用故障排查

原创 2015年01月07日 16:45:32
问题描述:
生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。

问题分析:
1,程序属于CPU密集型,和开发沟通过,排除此类情况。
2,程序代码有问题,出现死循环,可能性极大。

问题解决:
1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。
2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下吧。

解决过程:
1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。

2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn

显示结果如下:
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
root     10.5  19    - -         -      -  3626 00:12:48
root     10.1  19    - -         -      -  3593 00:12:16

找到了耗时最高的线程3626,占用CPU时间有12分钟了!

将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18

最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep e18 -A 30


将输出的信息发给开发部进行确认,这样就能找出有问题的代码。
通过最近几天的监控,CPU已经安静下来了
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JAVA进程高CPU占用故障排查

JAVA进程高CPU占用故障排查:在线上怎样结合linux命令和JDK工具定位问题。

Java线上应用故障排查之高CPU占用

最近线上频繁报警CPU空闲不足,故紧急排查后作此总结topps -ef|grep 22630ps -mp 22630 -o THREAD,tid,time | sort -nr | head -15p...

Java线上应用故障排查之一:高CPU占用

(友情提示:本博文章转载出处:hankchen,http://www.blogjava.net/hankchen) 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因...

Java线上应用故障排查之一:高CPU占用

Java应用CPU高分析过程

java线上应用故障排查:高cpu占用

(转载自:hankchen,http://www.blogjava.net/hankchen) 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 ...

Java线上应用故障排查之一:高CPU占用

先确定pid: top 找到最消耗cpu的进程15495   再确定tid: ps -mp 15495 -o THREAD,tid,time 找到最占用cpu的进程...

Java线上应用故障排查之一:高CPU占用

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/h...

java 故障排查之一:高CPU占用

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/han...

java应用故障排查-高cpu利用率

一个应用cpu利用率过高,若不是真的有大规模的密集型计算,基本就是出现了死循环!下面将以实际应用为例,介绍如何一步步排查这类问题。

线上应用故障排查之一:高CPU占用

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)