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

这里写图片描述

总结

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

相关文章

  • ubuntu20.04 LTS系统默认源sources.list文件的修改

    ubuntu20.04 LTS系统默认源sources.list文件的修改

    这篇文章主要介绍了ubuntu20.04 LTS系统默认源sources.list文件的修改,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Linux中VirtualBox的虚拟机开机自启方式

    Linux中VirtualBox的虚拟机开机自启方式

    本文介绍如何通过创建start.sh脚本并设置开机自启路径,实现VirtualBox虚拟机的开机自动运行,包含检查运行状态、脚本编辑及权限配置步骤
    2025-09-09
  • 在Linux上安装和使用Docker的方法

    在Linux上安装和使用Docker的方法

    这篇文章主要介绍了在Linux上安装和使用Docker的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • linux系统下使用tcpdump进行抓包方法

    linux系统下使用tcpdump进行抓包方法

    在本篇文章中小编给大家分享了关于linux系统下使用tcpdump进行抓包的方法和相关知识点,需要的朋友们学习下。
    2019-04-04
  • VIM实现文件快速跳转插件详解

    VIM实现文件快速跳转插件详解

    这篇文章主要给大家介绍了关于VIM实现文件快速跳转插件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用vim具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • Linux flock原理分析(shell进阶)

    Linux flock原理分析(shell进阶)

    flock锁在内核openfiletable中,文件打开涉及用户与内核的fd、inode表,多个进程共享v节点,未同步写入可能导致数据覆盖,劝告式锁需进程主动申请生效
    2025-07-07
  • Apache的压力测试以及web性能优化的常用知识总结

    Apache的压力测试以及web性能优化的常用知识总结

    这篇文章主要介绍了Apache的压力测试以及web性能优化的常用知识总结,笔记由《构建高性能web站点》这本高人气书籍整理而来,需要的朋友可以参考下
    2015-12-12
  • 详解Linux系统三种模式下的简单命令

    详解Linux系统三种模式下的简单命令

    这篇文章主要介绍了Linux系统三种模式下的简单命令,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • linux备份与恢复基础知识

    linux备份与恢复基础知识

    备份会改变atime,tar,cpio,dd都会这样做,dump通过原始设备来读取文件系统,因此它不会改变atime.
    2009-03-03
  • Ubuntu添加永久路由的几种常见方法

    Ubuntu添加永久路由的几种常见方法

    在 Ubuntu 系统中,添加永久路由通常涉及修改网络接口配置文件或使用 netplan 配置工具,本文给大家介绍了Ubuntu添加永久路由的几种常见方法,需要的朋友可以参考下
    2025-06-06

最新评论