欢迎光临
我们一直在努力

JAVA进程CPU占用高的故障排查

问题分析:
1.程序属于CPU密集型,和开发沟通过,排除此类情况。
2.程序代码有问题,出现死循环,可能性极大。
解决过程:
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
将输出的信息发给开发人员进行确认,这样就能找出有问题的代码。

赞(0) 打赏
未经允许不得转载:运维那些事 » JAVA进程CPU占用高的故障排查

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏