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第四行,我们打开代码看看

这里写图片描述

总结

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

相关文章

  • APACHE 自定义404错误页面设置方法

    APACHE 自定义404错误页面设置方法

    自定义404页面返回不当状态码如200等给网站最终SEO效果带来的不利影响,因此,确保自定义的404错误页面能够返回404状态码是极为重要的,也是网站优化与SEO的基本要求
    2017-03-03
  • CentOS7搭建gerrit 代码审查服务方法

    CentOS7搭建gerrit 代码审查服务方法

    下面小编就为大家分享一篇CentOS7搭建gerrit 代码审查服务方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Linux中的tcpdump命令示例详解

    Linux中的tcpdump命令示例详解

    这篇文章主要给大家介绍了关于Linux中tcpdump命令的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • PHP程序员玩转Linux系列 lnmp环境搭建

    PHP程序员玩转Linux系列 lnmp环境搭建

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,lnmp环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • linux下mysql数据库的操作的方法

    linux下mysql数据库的操作的方法

    下面小编就为大家带来一篇linux下mysql数据库的操作的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Linux下查看nginx apache mysql php的编译参数

    Linux下查看nginx apache mysql php的编译参数

    由于工作的需要,有时候需要在一台不是你参与编译的环境调试环境,这就需要知道nginx,apache,mysql,php的编译参数,以下小方法能快速让你了解默认的服务器里的编译参数
    2014-03-03
  • Linux操作文件的底层系统调用,探究父子进程是否可以共享文件问题

    Linux操作文件的底层系统调用,探究父子进程是否可以共享文件问题

    这篇文章主要介绍了Linux操作文件的底层系统调用,探究父子进程是否可以共享文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 解决SSH连接超时的2个配置方法

    解决SSH连接超时的2个配置方法

    用SSH客户端连接linux服务器时,经常会出现与服务器会话连接中断现象,照成这个问题的原因便是SSH服务有自己独特的会话连接机制。
    2014-04-04
  • Shell中去除字符串里的空格或指定字符的方法

    Shell中去除字符串里的空格或指定字符的方法

    今天小编就为大家分享一篇关于Shell中去除字符串里的空格或指定字符的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Linux系统创建TCP连接流程介绍

    Linux系统创建TCP连接流程介绍

    大家好,本篇文章主要讲的是Linux系统创建TCP连接流程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦,方便下次浏览
    2021-12-12

最新评论