快速记忆口诀
-
us 高 → 业务计算重
-
sy 高 → syscall / 上下文切换多
-
wa 高 → 磁盘慢
-
hi 高 → 硬件中断疯
-
si 高 → 网络小包 / 软中断
-
id 高 → 真的闲;如果业务还慢,去查 wa 或 网络 RTT
| 指标 | 全称 | 含义 | 通俗理解 | 常见高负载原因 | 下一步解决方案 |
|---|---|---|---|---|---|
| us | User CPU time | 用户空间程序占用CPU的百分比 | 你的应用程序在疯狂写代码 | 业务逻辑复杂、计算密集型任务、死循环或低效算法 | 1. 使用性能分析工具(如perf top)定位消耗CPU的具体代码 2. 优化算法或减少循环次数 3. 对于GC频繁问题,进行JVM调优或程序调优 |
| sy | System CPU time | 内核空间程序占用CPU的百分比 | 操作系统内核在处理各种杂事 | 频繁的系统调用、上下文切换、驱动程序问题 | 1. 减少线程数或使用线程池避免频繁创建线程 2. 优化锁竞争(如使用并发包或无锁数据结构) 3. 检查并优化驱动程序或系统调用 |
| ni | Nice CPU time | 被调整过优先级的用户进程占用CPU的百分比 | 领导给某些员工加薪让他们加班 | 人为调整了进程的优先级(如使用 nice命令) |
1. 检查并调整进程优先级(使用renice命令) 2. 分析高优先级进程是否必要,避免过度占用资源 |
| id | Idle | CPU空闲时间的百分比 | 员工在摸鱼喝茶 | 系统负载极低,资源过剩 | 无需处理,表明系统资源充足 |
| wa | I/O wait | CPU等待I/O操作完成的时间百分比 | 程序员在等快递 | 磁盘I/O瓶颈(如机械硬盘满负荷)、网络延迟高 | 1. 使用iostat或iotop分析磁盘I/O瓶颈 2. 优化磁盘性能(如使用SSD或RAID) 3. 检查网络延迟或带宽问题 |
| hi | Hardware IRQs | 处理硬件中断所花费的CPU时间百分比 | 前台接电话 | 网卡收到大量小包(如DDoS攻击)、硬盘频繁寻道 | 1. 使用cat /proc/interrupts查看中断分布 2. 优化硬件配置(如更换网卡或调整中断亲和性) |
| si | Software IRQs | 处理软件中断所花费的CPU时间百分比 | 客服处理工单 | 网络协议栈处理(如TCP重传)、定时任务触发 | 1. 使用cat /proc/softirqs分析软中断来源 2. 优化网络配置(如调整TCP参数或启用RPS) 3. 减少定时任务频率或优化其逻辑 |
| st | Steal time | 在虚拟化环境中,被宿主机或其他虚拟机"偷走"的CPU时间百分比 | 房东儿子抢了你的WiFi带宽 | 宿主机资源超卖、虚拟机监控程序(Hypervisor)繁忙 | 1. 检查宿主机资源分配情况 2. 迁移虚拟机到其他宿主机 3. 联系云服务商调整资源配额 |
表1:关键指标解读
| 类型 | 含义 | 高负载场景 |
|---|---|---|
| HI | 硬件中断下半部处理(如网卡数据包处理) | 网络流量暴增、磁盘I/O过载 |
| TIMER | 定时器中断(系统调度、进程时间统计) | 高频定时任务(如cron任务) |
| NET_RX | 网络接收中断(数据链路层处理) | 高并发网络请求(如Web服务器) |
| NET_TX | 网络发送中断 | 大量数据外发(如文件上传) |
| BLOCK | 块设备软中断(磁盘I/O操作完成通知) | 数据库随机查询、日志刷盘 |
| SCHED | 内核调度中断(进程上下文切换) | 多线程程序频繁切换 |
| RCU | RCU锁同步(读写锁优化机制) | 高并发读操作(如数据库查询) |
表2:指标详情(对应第1张图片结构)
| 指标 | 当前值范围(CPU0-CPU7) | 异常阈值参考 | 异常可能性 | 典型场景 |
|---|---|---|---|---|
| HI | 1, 0, 0, 0, 0, 0, 0, 0(其余CPU均为0) | 正常(无硬件中断下半部任务) | 否 | 无 |
| TIMER | 256734, 185608, 255245, 241399, 250913, 286889, 274629, 270403(其余CPU为0) | 单核>20k或全局占比>10% | 中等 | 高频定时任务(如cron) |
| NET_TX | 0, 0, 1, 6746, 6711, 3, 1, 6(其余CPU为0) | 单核>10k | 低 | 大文件上传/下载 |
| NET_RX | 167, 281, 243, 23200, 413, 320, 161, 29074(其余CPU为0) | 单核>5k或突发流量持续5分钟 | 高 | 小包洪水攻击、高并发请求 |
| BLOCK | 1263, 3026, 4955, 395, 2401, 4210, 18377, 1645(其余CPU为0) | 单核>10k或磁盘队列>2 | 高 | 数据库随机查询、日志刷盘 |
| SCHED | 1258997, 565837, 454118, 258624, 410908, 425371, 352018, 354457(其余CPU为0) | 单核>15k或上下文切换频繁 | 高 | 多线程程序竞争CPU |
| RCU | 663354, 938973, 836306, 464604, 738576, 819357, 631525, 636047(其余CPU为0) | 单核>20k | 高 | 大规模RCU锁竞争 |