Linux系统CPU占用率较高问题排查思路

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

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

Linux 系统 CPU 占用率较高问题排查思路

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

方法一

***步:使用

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

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

第二步:使用

  1. top -H -p [进程id] 

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

第三步:使用

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

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

  1. bc是linux的计算器命令 

第四步:执行

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

查看线程状态信息

方法二

***步:使用

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

找到占用CPU过高的进程

第二步:使用

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

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

第三步:使用

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

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

第四步:使用

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

打印线程的堆栈信息

案例分析

1. 场景描述

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

2. 解决过程

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

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

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

显示结果如下:

Linux 系统 CPU 占用率较高问题排查思路

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

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

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

(4) ***使用jstack命令打印出该进程下面的此线程的堆栈信息:

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

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

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

Linux 系统 CPU 占用率较高问题排查思路

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

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2019-07-24 11:52:11

CPU服务器面试官

2013-12-10 22:06:22

开源系统Linux系统

2009-08-13 17:53:59

控制CPU占用率

2019-03-07 09:25:59

LinuxCPU交换分区

2022-10-10 09:10:07

命令磁盘排查

2016-09-21 12:26:47

Windows 10CPU禁用

2020-12-20 10:37:06

Windows10操作系统CPU

2021-07-06 09:45:03

鸿蒙HarmonyOS应用

2019-09-17 13:00:54

Windows 10微软CPU

2020-09-28 13:54:12

Chrome OSChromebook更新

2021-05-14 09:41:16

Windows 功能系统

2021-02-19 13:29:06

Windows 10Windows微软

2021-05-12 21:10:22

Windows10操作系统微软

2020-05-21 21:36:54

Windows 10Windows 7Windows

2021-11-05 21:56:13

Windows 10Windows微软

2010-02-24 08:09:09

Windows 7内存占用

2023-06-01 16:30:49

微软Windows 11

2021-02-26 13:35:46

JavaCPU内存

2020-04-14 15:50:43

Windows10硬盘卡死

2021-11-09 23:19:14

WindowsCPU系统
点赞
收藏

51CTO技术栈公众号