Linux 服务器性能监控指标详解

Linux 服务器性能监控指标详解

性能监控的核心目标不是“把所有指标都收集起来”,而是用最少的指标、在最早的时间点发现问题、在最短的时间内定位到最可能的资源瓶颈

以下是目前生产环境中(尤其云原生、容器化、微服务场景)最常使用、最有诊断价值的指标体系,按资源类型分类,每项都说明:

  • 指标含义
  • 采集来源(/proc、sysfs、工具)
  • 关键阈值 / 异常表现(经验参考)
  • 它真正能告诉你什么(诊断价值)
  • 对应最常见的根因

1. CPU 相关核心指标

指标名称来源 / 命令含义与计算方式关键阈值(经验)诊断价值与常见根因
load average (1/5/15min)uptime /proc/loadavg过去 1/5/15 分钟内处于 Running 或 Uninterruptible 的任务平均数> 核数×1.5–2.0 开始关注 > 核数×3.0 严重过载综合压力最直观指标;高但 CPU 使用率低 → 大量等待(IO/锁/网络)
%usr + %systop / mpstat / sar -u用户态 + 内核态 CPU 使用率持续 > 80–90% → 计算密集真正 CPU 计算饱和;usr 高 → 应用代码,sys 高 → 内核栈/中断
%iowait / %watop / vmstat / mpstatCPU 等待磁盘 IO 的时间占比> 15–30% 持续 → 明显 IO 瓶颈最经典的“假高负载、真 IO 瓶颈”指标
%steal / %stmpstat / top(虚拟化可见)被 hypervisor 偷走的 CPU 时间(云主机专属)> 5–10% 持续 → 宿主机超卖或 noisy neighbor云上机器特有;高 steal 常伴随响应抖动
runq-sz / rvmstat / sar -q当前可运行(就绪)但未调度上的任务数持续 > 核数×1.5–2.0 → CPU 调度压力大比 load 更精确的“CPU 真的不够用”指标
cs (context switch)vmstat / pidstat -w每秒上下文切换次数> 10k–50k/s 开始关注 > 100k/s 严重高 cs + load 高但 CPU 不满 → 锁竞争 / 线程过多

2. 内存相关核心指标

指标名称来源 / 命令含义关键阈值(经验)诊断价值与常见根因
MemAvailablefree -wh / /proc/meminfo系统实际还能给新应用分配的内存(最重要!)< 总内存 10–15% 持续下降 → 真的缺内存唯一真正判断“内存是否够用”的指标;不要只看 used
Committed_AS/proc/meminfo当前已承诺(malloc 但未实际使用)的内存总量> 总内存 100–120% → 可能触发 OOM预测未来 OOM 风险,比 used 更有前瞻性
AnonPages/proc/meminfo匿名页(进程堆、栈、mmap 私有)占用持续快速增长 → 内存泄漏区分是应用真实使用还是 page cache
Dirty + Writeback/proc/meminfo脏页 + 正在回写的页面Dirty > 几 GB 且持续上升 → 写压力大脏页堆积会导致 kswapd 活跃、IO 阻塞
Slab / SReclaimable/proc/meminfo / slabtop内核 slab 缓存(dentry/inode/slub)dentry/inode 几 GB → 元数据压力高并发小文件场景常见;vfs_cache_pressure 可调
Swap Used / si/sofree -h / vmstat已用 swap + 每秒 swap in/outsi/so 非零且持续 → 内存压力已很严重swap 抖动是延迟毛刺最常见元凶之一

3. 磁盘 IO 核心指标

指标名称来源 / 命令含义关键阈值(经验)诊断价值与常见根因
%utiliostat -x磁盘忙碌时间百分比(最重要!)> 80–90%(单个盘)→ 饱和IO 瓶颈最直接指标;接近 100% 几乎一定有问题
awaitiostat -x平均每次 IO 完成时间(包括队列等待)> 10–20ms(SSD)> 50–100ms(机械盘)await >> svctm → 队列排队严重;await 极高 → 单次 IO 很慢
r/s + w/siostat -x每秒读/写次数r/s > 几千 → 随机读密集判断是随机还是顺序 IO
rMB/s + wMB/siostat -x每秒读/写吞吐量远低于磁盘规格 → 随机 IO 主导吞吐低但 %util 高 → 随机小块 IO 瓶颈
avgqu-sziostat -x平均 IO 队列长度> 1–2(单盘)持续 → 排队严重队列积压是延迟抖动主因

4. 网络核心指标

指标名称来源 / 命令含义关键阈值(经验)诊断价值与常见根因
retransmitted segmentsss -s / netstat -sTCP 重传段数持续增长 > 1–5% → 网络质量差最直接的网络拥塞 / 丢包指标
listen drops / overflowsss -s / netstat -slisten 队列溢出非零且持续增长 → 连接建立被拒绝新连接建立慢最常见原因
tcp_tw_buckets / TIME_WAITss -sTIME_WAIT 数量> 几万–十几万 → 端口耗尽可能高并发短连接场景常见;调 tcp_tw_reuse / fin_timeout
rx/tx errors / dropssar -n DEV / ip -s link网卡硬件层丢包 / 错误非零且增长 → 网卡 / 驱动 / 物理链路问题硬件层问题最直接证据

5. 系统整体压力指标

指标名称来源含义关键阈值诊断价值
Pressure Stall Information (PSI)/proc/pressure/{cpu,memory,io}任务因资源不足被 stall 的时间占比some > 10–20%,full > 1–5% → 严重压力cgroup v2 时代最敏感的“系统真实压力”指标
nr_running / nr_iowait/proc/stat当前运行中 + 等待 IO 的进程数nr_iowait 持续 > 0 → IO 等待与 load average 类似但更精确
procs_blockedvmstat / /proc/stat当前处于 D 状态(不可中断睡眠)的进程数> 0 且持续 → IO 或其他阻塞D 状态进程是“假高负载”的经典证据

推荐的核心监控指标组合(Grafana / Prometheus 常用 Dashboard)

必须监控的 Top 10(生产环境建议至少覆盖这些):

  1. load1 / load5 / load15 per core
  2. CPU: %usr + %sys + %iowait + %steal
  3. MemAvailable percentage + Swap Used
  4. Disk: %util, await, r/s, w/s, rMB/s, wMB/s(每个盘单独)
  5. Network: tcp_retransmit rate, listen drops, TIME_WAIT count
  6. PSI: cpu.some/full, memory.some/full, io.some/full
  7. Context Switches / sec
  8. Softirq NET_RX / NET_TX
  9. Dirty Pages + Writeback
  10. OOM killer events(counter)

你现在最关心哪一类指标? (CPU?内存?磁盘 IO?网络?还是想做一套完整的 Prometheus + Grafana 监控?)

Telegram
Telegram@IDCSELL