Linux系统java进程CPU占用过高的问题及排查
目录
- Linux系统java进程CPU占用过高
- Linux如何定位Java进程CPU利用率过高原因
- 总结
Linux系统java进程CPU占用过高
1.通过top命令查看,CPU占用高的进程
top

2.查看该进程下线程占用CPU情况
# 12133-进程号 top -Hp 12133

这里的PID是线程ID,可以看到,有几个线程CPU占用过高。
3.将线程ID转成16进制
printf '0x%x\n' 5421

4.通过jstack命令查看线程堆栈
# 12113-进程号 # 0xc81-上面查到的16进制线程号 jstack 12113|grep 0xc81 -A 20

通过堆栈信息,找到具体的代码,分析原因。
Linux如何定位Java进程CPU利用率过高原因
首先通过Top命令查看占用CPU较高的进程PID,执行Top之后按1可以查看每个核占用比例
top

这里由于我是用的虚拟机,即使我的Java进程占用CPU很高也只是占的虚拟机的,而对整个机器的CPU来说占的并不高。
这里我们找到了pid=7957
然后我们在根据pid找出占用CPU过高的线程
top -H -p 7957

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

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

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


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

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
栏 目:其它服务器
下一篇:Docker命令中的各种参数使用(run、v、rm、-w、-u、-e)
本文标题:Linux系统java进程CPU占用过高的问题及排查
本文地址:https://zz.feitang.co/server/29978.html
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





