Linux系统中CPU占用率较高问题排查思路与解决方法

 更新时间:2019年07月16日 09:07:18   作者:老王谈运维  
这篇文章主要给大家介绍了关于Linux系统中CPU占用率较高问题排查思路与解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

作为 Linux 运维工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。


很多运维的同学遇到这种状况往往会不知所措,对于CPU过载问题通常使用以下两种方式即可快速定位:

方法一

第一步:使用

top命令,然后按shift+p按照CPU排序

找到占用CPU过高的进程的pid

第二步:使用

top -H -p [进程id]

找到进程中消耗资源最高的线程的id

第三步:使用

echo 'obase=16;[线程id]' | bc或者printf "%x\n" [线程id]

将线程id转换为16进制(字母要小写)

bc是linux的计算器命令

第四步:执行

jstack [进程id] |grep -A 10 [线程id的16进制]”

查看线程状态信息

方法二

第一步:使用

top命令,然后按shift+p按照CPU排序

找到占用CPU过高的进程

第二步:使用

ps -mp pid -o THREAD,tid,time | sort -rn

获取线程信息,并找到占用CPU高的线程

第三步:使用

echo 'obase=16;[线程id]' | bc或者printf "%x\n" [线程id]

将需要的线程ID转换为16进制格式

第四步:使用

jstack pid |grep tid -A 30 [线程id的16进制]

打印线程的堆栈信息

案例分析

场景描述

生产环境下JAVA进程高CPU占用故障排查

解决过程

1、根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。

2、找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:

[root@localhost ~]# ps -mp 2633 -o THREAD,tid,time | sort -rn

显示结果如下:


找到了耗时最高的线程(TID)3626,占用CPU时间有12分钟了!

3、将需要的线程TID转换为16进制格式

[root@localhost ~]# printf "%x\n" 3626
e18

4、最后使用jstack命令打印出该进程下面的此线程的堆栈信息:

[root@localhost ~]# jstack 2633 |grep "e18" -A 30

相比故障的解决而言,发现故障也同等的重要!市场上的大多数监控软件都能实现服务器负载的实时观测,比如:Zabbix、Nagios、阿里云监控(针对云服务器)等。但是当中大部分的软件都需要运维同学主动去设置规则或者检测才能发现问题,如何被动的也能收到告警呢?

推荐大家一个实用的运维软件——王教授,对于业务部署在阿里云上的用户,只需绑定需要监控的只读AcessKey,即可将云上资源的告警信息及时通知给对应的团队成员。

化主动为被动的方式,一方面减轻了运维工程师的工作,另一方面也减小了运维漏看或者忽略告警的情况发生。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Linux主机ssh使用秘钥方式实现免登陆互通配置方式

    Linux主机ssh使用秘钥方式实现免登陆互通配置方式

    实现多台服务器间SSH免登陆的操作包括密钥生成、配置与传递,首先在每台主机上生成秘钥,并将公钥传输到对方主机的配置文件中,确保ssh服务开启并且authorized_keys文件具有正确的权限,即可实现免登陆互通,其中可能遇到的问题通常跟文件权限有关
    2024-10-10
  • SSH配置免密登录全过程

    SSH配置免密登录全过程

    这篇文章主要介绍了SSH配置免密登录全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • CentOS 配置无密码登录的实现

    CentOS 配置无密码登录的实现

    这篇文章主要介绍了CentOS 配置无密码登录的实现的相关资料,需要的朋友可以参考下
    2017-06-06
  • centos 7.5 部署varnish缓存服务器功能

    centos 7.5 部署varnish缓存服务器功能

    这篇文章主要介绍了centos 7.5 部署varnish缓存服务器功能,文中给大家介绍了varnish的简介和主要特征,需要的朋友可以参考下
    2019-10-10
  • Linux中FTP服务器搭建与安全配置方式

    Linux中FTP服务器搭建与安全配置方式

    这篇文章主要介绍了Linux中FTP服务器搭建与安全配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • windows下安装PEAR php5.3.1下解决出错的方法

    windows下安装PEAR php5.3.1下解决出错的方法

    在配置好了Apache2.2.14和PHP5.3.1后,最近想安装PEAR(PHP Extension and Application Repository),但是在执行批处理文件go-pear.bat的时候出现了错误
    2010-02-02
  • 在Linux服务器上部署War项目教程

    在Linux服务器上部署War项目教程

    文章讲述了如何将War包上传到Linux服务器上的步骤,包括使用FTP或SFTP上传,确认并安装Java运行环境和Web服务器(如ApacheTomcat或Nginx),将War包复制到相应的目录,并重启服务以确保部署成功,最后,通过浏览器访问部署的应用
    2025-02-02
  • ubuntu系统theano和keras的安装方法

    ubuntu系统theano和keras的安装方法

    这篇文章主要介绍了ubuntu系统theano和keras的安装方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Linux环境下nodejs的安装图文教程

    Linux环境下nodejs的安装图文教程

    这篇文章主要介绍了Linux环境下nodejs的安装图文教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • Linux 查看空间使用情况的实例详解

    Linux 查看空间使用情况的实例详解

    这篇文章主要介绍了Linux 查看空间使用情况的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握如何实现,需要的朋友可以参考下
    2017-10-10

最新评论