linux CPU 负载高问题分析方法

本文介绍了Linux系统中CPU负载高的问题分析方法。平均负载不仅包含CPU使用率,还包括等待CPU和I/O的进程数。当平均负载超过CPU核心数时,可能表明系统过载。通过mpstat和pidstat等工具可以分别检查CPU密集型和I/O密集型进程,以及大量进程的CPU使用和等待情况,从而定位问题原因。
摘要由CSDN通过智能技术生成

linux CPU 负载高问题分析方法

CPU

平均负载

平均负载含义

平均负载是指执行uptime后显示的Load Average(平均负载),单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。

平均负载多少合理

当平均负载比cpu个数还大的时候,系统已经出现了过载。要综合三个不同时间间隔的平均值去比较。

平均负载与CPU使用率

平均负载和CPU使用率不能混为一谈,平均负载高了并不意味这CPU使用率就会变高。平均负载是单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程。

而CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应,比如:

  • CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
  • I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
  • 大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
如何分析平均负载过高问题
  • CPU密集型进程
    通过mpstat查看CPU使用率的变化情况:
    -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
# -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
$ mpstat -P ALL 5
Linux 4.15.0 (ubuntu) 09/22/18 _x86_64_ (2 CPU)
13:30:06     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13:30:11     all   50.05    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   49.95
13:30:11       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13:30:11       1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

可以看到有一个 CPU 的使用率为 100%,但它的 iowait 只有 0。这说明,平均负载的升高正是由于 CPU 使用率为 100% 。

再通过pidstat查询到哪个进程导致cpu使用率100%。

# 间隔 5 秒后输出一组数据
$ pidstat -u 5 1
13:37:07      UID   PID    %usr     %system  %guest   %wait    %CPU    CPU  Command
13:37:12      0     2962   100.00   0.00     0.00     0.00     100.00  1    stress

  • I/O 密集型进程
    同理,先通过mpstat查看usr和iowait的值,如果iowait比usr高,那说明是iowait的升高导致平均负载的升高。

  • 大量进程的场景
    通过pidstat查看进程情况,如果多个服务都在抢少量的cpu,并且wait值都比较高的话,说明每个进程等待cpu的时间都很高,最终导致cpu过载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值