linux的CPU使用率达到100%的快速定位过程

 更新时间:2024年12月18日 14:42:06   作者:忍冬行者  
本文描述了在CentOS 7.9操作系统上排查CPU异常告警的过程,通过使用top和jstack命令,找到了最耗CPU的进程和线程,并根据堆栈信息定位到了对应代码

问题现象

Linux服务器(操作系统版本是centos7.9)上面部署了若干Java站点服务,突然收到运维的CPU异常g告警,到了影响业务的情况发生,经初步排查,未出现异常进程,排除挖矿病毒的原因。

排查思路

(1)找到最耗CPU的进程;

(2)找到最耗CPU的线程;

(3)查看堆栈,定位线程在干嘛,定位对应代码;

排查步骤

1.找到最耗CPU的进程

方法:使用top命令

  • 执行top -c ,显示进程运行信息列表
  • 键入P (大写p),进程按照CPU使用率排序

2.找到最耗CPU的线程

方法:使用top工具

  • top -Hp ,显示一个进程的线程运行信息列表
  • 键入P (大写p),线程按照CPU使用率排序
  • top -Hp 30365

3.查看堆栈,定位线程在干嘛,定位对应代码

  • 首先,将线程PID转化为16进制。
  • 工具:printf
  • 方法:printf "%x\n" 6080

如上图,6080对应的16进制是0x17c0

之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的

4.查看堆栈,找到线程在干嘛

  • 工具:jstack
  • 方法:jstack 30365 | grep '0x17c0' -C5 --color
  • 最后,根据堆栈里的信息,找到对应的代码.

总结

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

相关文章

  • Linux进程地址空间详解

    Linux进程地址空间详解

    在C语言编程中,内存管理是一个重要的环节,本文详细解析了C语言中的内存区域划分,包括栈区、堆区、全局区等,并探讨了fork函数的遗留问题,即如何出现一个变量同时等于0又大于0的情况,此外,文章还深入讨论了进程地址空间的概念
    2024-10-10
  • Apache中的Order Allow,Deny用法详解

    Apache中的Order Allow,Deny用法详解

    这篇文章主要介绍了Apache中的Order Allow,Deny用法,结合实例较为详细的分析了Apache中Order Allow,Deny的具体作用及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • Linux下ZooKeeper分布式集群安装教程

    Linux下ZooKeeper分布式集群安装教程

    这篇文章主要为大家详细介绍了Linux下ZooKeeper分布式集群安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Linux使用publick key登录过程(无密码登录)

    Linux使用publick key登录过程(无密码登录)

    这篇文章主要介绍了Linux使用publick key登录过程(无密码登录),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-03-03
  • Linux系统管理常用命令及参数说明中文版

    Linux系统管理常用命令及参数说明中文版

    这篇文章主要介绍了Linux系统管理常用命令及其参数的中文版说明,方便了英文不好的同学学习Linux,需要的朋友可以参考下
    2014-03-03
  • ubuntu开启22端口的实现

    ubuntu开启22端口的实现

    这篇文章主要介绍了ubuntu开启22端口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Centos7如何开启端口的方法示例

    Centos7如何开启端口的方法示例

    这篇文章主要介绍了Centos7如何开启端口的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • CentOS7.4下MySQL5.7.28二进制方式安装的方法步骤

    CentOS7.4下MySQL5.7.28二进制方式安装的方法步骤

    这篇文章主要介绍了CentOS7.4下MySQL5.7.28二进制方式安装的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境

    Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境

    本文为大家分享了如何在Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境,部署方法非常详细
    2018-10-10
  • 在linux下升级软件包版本等方法详解

    在linux下升级软件包版本等方法详解

    今天小编就为大家分享一篇在linux下升级软件包版本等方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论