news 2026/6/25 0:55:25

主机监控指标解析—CPU篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
主机监控指标解析—CPU篇

一、 CPU 使用率

这是最基础的指标,反映了 CPU 时间片被不同类型任务占用的比例。理解不同状态的占用是定位问题的关键。

1.1 核心指标详解

命令:top, mpstat -P ALL, sar -u

  • 指标含义
指标名称对应字段 (top)含义详解作用与分析
User%us用户态使用率。应用程序(如 Java, Nginx, Python)代码逻辑消耗的 CPU 时间。如果此值高,说明业务繁忙或程序算法复杂(如正在进行加密、压缩、循环计算)。一般情况下这是“健康”的高负载。
System%sy内核态使用率。操作系统内核执行系统调用(如读写文件、网络包处理、分配内存)消耗的时间。警示信号。正常情况下不应超过 30%。如果过高,说明进程频繁请求系统资源,或驱动程序有 Bug。
IOWait%waIO 等待时间。CPU 空闲,但因为此时有进程在等待磁盘 I/O 完成,CPU 处于“无所事事但不得不等”的状态。瓶颈信号。虽然它计入 CPU 使用率,但根源是磁盘太慢。说明存储子系统是瓶颈。
Idle%id空闲率。CPU 完全无事可做的时间。反映资源是否富余。注意:高 Idle 并不代表系统一定快(可能卡在 I/O)。
Softirq%si软中断。CPU 处理软中断(主要是网络收发包)的时间。网络信号。如果此值单核飙高,通常意味着由于网络流量极大(如 DDoS 攻击或高频 RPC 调用)导致网卡中断处理不过来。
Steal%st被窃取时间。仅在虚拟机中出现,表示宿主机(Hypervisor)把 CPU 时间分给了其他虚拟机,当前 VM 等待物理 CPU 的时间。环境信号。如果此值高,说明你的云服务器所在的物理宿主机“超卖”严重,邻居在抢资源。

作用:快速定位是业务代码慢(User)、系统开销大(Sys)、磁盘慢(IOWait)还是底层宿主机慢(Steal)。

1.2 警报与判断

  • 警报阈值

    • 警告 (Warning):单核或总使用率 > 75%
    • 严重 (Critical):单核或总使用率 > 90%
    • 异常 (System)%sy> 30% 或%wa> 20%
  • 典型场景

    • User 高:程序死循环、复杂的序列化/反序列化、机器学习计算。
    • Sys 高:频繁的线程创建/销毁、过多的上下文切换、糟糕的锁竞争。
    • IOWait 高:数据库全表扫描、日志写入过快、磁盘故障。

二、 平均负载

Load Average 是衡量系统“繁忙程度”的趋势指标,它和 CPU 使用率不同,它包含正在运行等待运行(含等待磁盘)的任务。

2.1 核心指标详解

命令:uptime, top, w

  • 指标含义
指标名称含义详解作用与分析
Load 1/5/15分别代表过去 1分钟、5分钟、15分钟的平均负载。即:运行队列中(Running)+ 不可中断睡眠中(Uninterruptible Sleep/Disk Wait)的进程数平均值。判断趋势。如果不看核数,Load 没有任何意义。标准线 = CPU 逻辑核数。Load < 核数:系统空闲。Load > 核数:系统过载,任务需要排队。

2.2 警报与判断

  • 警报阈值

    • Load (15min)> CPU核数 * 0.7 (作为预警)。
    • Load (1min)> CPU核数 * 1.5 (说明爆发性拥堵)。
  • 场景分析

    • Load 高,CPU User 高:计算密集型任务堆积,CPU 确实不够用了。
    • Load 高,CPUIdle高 (关键):这是由于大量进程处于D状态(Disk Sleep),通常是因为磁盘 I/O 极其缓慢或 NFS 挂死,导致进程卡在队列里算作 Load,但 CPU 其实是闲着的。

三、 上下文切换与中断 (Context Switches)

CPU 在不同进程/线程之间切换是需要成本的(保存寄存器、刷新缓存等)。

3.1 指标详解

命令:vmstat 1, pidstat -w

指标名称对应字段含义详解作用与分析
cssystem -> cs上下文切换总数。每秒 CPU 切换任务的次数。数值取决于业务类型。如果 cs 飙升到几十万/秒,且 CPU %sy 升高,说明程序并发设计不合理(如频繁唤醒线程)。
cswchpidstat -> cswch自愿上下文切换。进程因为等待资源(如 IO、锁)而主动让出 CPU。说明进程资源不足(如等待数据库返回、等待读盘)。
nvcswchpidstat -> nvcswch非自愿上下文切换。进程时间片用完,被系统强制调度走。CPU 瓶颈实锤。说明争抢 CPU 的进程太多,都在排队抢时间片。
insystem -> in中断次数。每秒硬件中断的次数。正常情况会波动。如果异常飙高,检查网卡流量或 USB 等外设驱动。

四、 运行队列 (Process Queue)

这是最直接反映 CPU 是否“排队”的指标。

4.1 指标详解

命令:vmstat 1

指标名称对应字段含义详解作用与分析
r (Running)procs -> r就绪队列长度。正在运行或等待 CPU 时间片的进程数量。判定饱和度的金标准。如果 r 持续大于 CPU 核数,说明 CPU 资源完全不够分,系统严重卡顿。
b (Blocked)procs -> b阻塞队列长度。处于不可中断睡眠(等待 I/O)的进程数量。如果 b 值高,不要查 CPU,去查磁盘或网络存储(NFS/iSCSI)。

五、 总结与排查速查表

现象可能原因建议排查工具解决思路
User 高,Load 高业务代码计算量大,死循环top (按 P 排序), perf优化代码算法,扩容 CPU,分析 Java 线程栈。
Sys 高,Context Switch 高线程切换频繁,锁竞争激烈pidstat -w, vmstat检查程序并发模型,是否线程池设置过大,减少不必要的系统调用。
Load 高,CPU 使用率低磁盘 I/O 阻塞 (D状态进程)iotop, dmesg检查磁盘读写延迟,检查 NFS/存储挂载情况。
Softirq (si) 高网络包量过大 (PPS高)ethtool, nicstat, sar -n DEV检查是否遭受攻击,开启网卡多队列,优化网络内核参数。
Steal (st) 高宿主机超卖,邻居抢资源无(需联系云厂商)迁移实例,或者扩容。
Wait (wa) 高内存不足导致频繁 Swapfree -h, vmstat注意关联:内存不足引起 Swap 换入换出,会直接体现为 CPU 的 IOWait 升高。优先解决内存问题。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 4:42:19

MCP协议集成实战手册:芋道源码构建企业级AI协作平台

MCP协议集成实战手册&#xff1a;芋道源码构建企业级AI协作平台 【免费下载链接】ruoyi-vue-pro &#x1f525; 官方推荐 &#x1f525; RuoYi-Vue 全新 Pro 版本&#xff0c;优化重构所有功能。基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 微信小…

作者头像 李华
网站建设 2026/6/24 21:16:03

QuickLook视频预览失败的3分钟修复指南:从诊断到优化

QuickLook视频预览失败的3分钟修复指南&#xff1a;从诊断到优化 【免费下载链接】QuickLook Bring macOS “Quick Look” feature to Windows 项目地址: https://gitcode.com/gh_mirrors/qu/QuickLook QuickLook作为Windows平台上最受欢迎的文件快速预览工具&#xff0…

作者头像 李华
网站建设 2026/6/24 18:37:30

48、探索高级 Shell 脚本功能与趣味消息脚本

探索高级 Shell 脚本功能与趣味消息脚本 1. 高级 Shell 脚本功能概述 在编写 Shell 脚本时,有一些高级功能能极大地提升脚本的实用性和效率。下面将为大家介绍几种常见的高级功能及其使用方法。 1.1 使用 MySQL 存储持久数据 若要为应用程序存储持久数据,可借助 MySQL 服…

作者头像 李华
网站建设 2026/6/24 9:31:30

Sapiens系统稳定性保障:深度解析故障恢复与可靠性设计

Sapiens系统稳定性保障&#xff1a;深度解析故障恢复与可靠性设计 【免费下载链接】sapiens High-resolution models for human tasks. 项目地址: https://gitcode.com/gh_mirrors/sa/sapiens Sapiens作为基于3亿张真实世界人类图像预训练的高分辨率视觉模型&#xff0c…

作者头像 李华
网站建设 2026/6/25 8:03:10

51、Linux环境变量与数据处理工具:sed和gawk详解

Linux环境变量与数据处理工具:sed和gawk详解 1. 评估环境变量 在Linux系统中,bash shell使用了许多环境变量。虽然环境变量本身不是命令,但它们常常会影响shell命令的操作方式,因此了解这些环境变量非常重要。以下是bash shell中一些默认的环境变量及其描述: 变量 描述…

作者头像 李华