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

 更新时间:2023年06月28日 10:21:27   作者:千月落  
这篇文章主要介绍了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第四行,我们打开代码看看

这里写图片描述

总结

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

相关文章

  • linux下安装nodejs及npm的方法

    linux下安装nodejs及npm的方法

    本篇文章主要介绍了linux下安装nodejs及npm的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Linux中别名与二进制的使用教程

    Linux中别名与二进制的使用教程

    这篇文章主要给大家介绍了关于Linux中别名与二进制的使用方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Linux下环境变量配置方法小结(.bash_profile和.bashrc的区别)

    Linux下环境变量配置方法小结(.bash_profile和.bashrc的区别)

    这篇文章主要介绍了Linux下环境变量配置方法小结(.bash_profile和.bashrc的区别),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Linux mount挂载和卸载硬盘脚本分享

    Linux mount挂载和卸载硬盘脚本分享

    本文通过脚本给大家分享了linux mount挂载和卸载硬盘的方法,非常不错,具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11
  • 使用 Apache 反向代理的设置技巧

    使用 Apache 反向代理的设置技巧

    这篇文章主要介绍了如何使用 Apache 设置反向代理,该模块使用ProxyApache 配置文件中的 -prefixed 指令进行配置。我们接下来会设置这些,需要的朋友可以参考下
    2022-01-01
  • Linux系统配置网络详细介绍

    Linux系统配置网络详细介绍

    大家好,本篇文章主要讲的是Linux系统配置网络详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • Linux CPU占用过高的原因与排查指南

    Linux CPU占用过高的原因与排查指南

    这篇文章主要介绍了Linux CPU占用过高的排查方法,结合top、ps、pidat,定位具体进程、线线及可能原因,区分正常负载与异常情况,确保服务稳定运行,需要的朋友可以参考下
    2026-05-05
  • CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)

    CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)

    这篇文章主要介绍了CentOS 6.4下配置LNMP服务器的详细步骤,需要的朋友可以参考下
    2013-06-06
  • linux swap交换分区(详解)

    linux swap交换分区(详解)

    当物理内存和swap都被使用完那么就会出错,out of memory,本文即将学习linux swap交换分区来解决这个问题
    2021-08-08
  • 概述Linux TTY/PTS的区别

    概述Linux TTY/PTS的区别

    这篇文章主要介绍了概述Linux TTY/PTS的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论