Linux系统java进程CPU占用过高的问题及排查

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享
免费资源网 – https://freexyz.cn/

目录Linux系统java进程CPU占用过高Linux如何定位Java进程CPU利用率过高原因总结

Linux系统java进程CPU占用过高

1.通过top命令查看,CPU占用高的进程

top

Linux系统java进程CPU占用过高的问题及排查插图

2.查看该进程下线程占用CPU情况

# 12133-进程号
top -Hp 12133

Linux系统java进程CPU占用过高的问题及排查插图1

这里的PID是线程ID,可以看到,有几个线程CPU占用过高。

3.将线程ID转成16进制

printf 0x%xn 5421

Linux系统java进程CPU占用过高的问题及排查插图2

4.通过jstack命令查看线程堆栈

# 12113-进程号
# 0xc81-上面查到的16进制线程号
jstack 12113|grep 0xc81 -A 20

Linux系统java进程CPU占用过高的问题及排查插图3

通过堆栈信息,找到具体的代码,分析原因。

Linux如何定位Java进程CPU利用率过高原因

首先通过Top命令查看占用CPU较高的进程PID,执行Top之后按1可以查看每个核占用比例

top

Linux系统java进程CPU占用过高的问题及排查插图4

这里由于我是用的虚拟机,即使我的Java进程占用CPU很高也只是占的虚拟机的,而对整个机器的CPU来说占的并不高。

这里我们找到了pid=7957

然后我们在根据pid找出占用CPU过高的线程

top -H -p 7957

Linux系统java进程CPU占用过高的问题及排查插图5

然后根据线程id=7958使用strace -p命令查看调用情况

Linux系统java进程CPU占用过高的问题及排查插图6

发现系统在不停的打印1然后把线程十进制的线程id=7958转换为十六进制

Linux系统java进程CPU占用过高的问题及排查插图7

最后抓取堆栈信息,查看代码位置

Linux系统java进程CPU占用过高的问题及排查插图8

Linux系统java进程CPU占用过高的问题及排查插图9

我看找到了线程7958,并且定位到了Test.main第四行,我们打开代码看看

Linux系统java进程CPU占用过高的问题及排查插图10

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容