线上服务器高负载分析:top、iostat、vmstat 组合拳

#Linux · 2026-01-28 · 阅读时间 9 分钟

当服务器出现“慢但不挂”的问题时,最怕只盯着一个指标。把 topiostatvmstat 串起来,可以快速判断瓶颈来自 CPU、磁盘还是内存。

1. 用 top 看 CPU 和进程画像

  • 关注 load average 与 CPU 核数的关系。
  • 观察 us / sy / wawa 高通常意味着 IO 等待。
  • Shift + P 排序,定位高 CPU 进程。

2. 用 iostat 验证是否磁盘瓶颈

iostat -x 1 5
  • %util 长期接近 100%,说明磁盘接近打满。
  • await 持续升高,说明请求排队明显。
  • 随机写较多时,优先检查日志刷盘与数据库慢查询。

3. 用 vmstat 判断内存与调度压力

vmstat 1 5
  • si/so 非 0:存在 swap,性能一般会明显下降。
  • r 长期大于 CPU 核数:运行队列拥堵。
  • b 值较高:进程处于不可中断睡眠,常见于 IO 等待。

4. 实战建议

  1. 先止血:限流、降级、扩容一条先落地。
  2. 再优化:拆慢 SQL、减少同步日志、引入缓存。
  3. 最后固化:建立负载阈值告警与巡检脚本。
← 返回首页