Linux生产环境故障排查教程_系统瓶颈定位方法论

11次阅读

linux生产环境排查应按系统负载、CPU、内存、磁盘、网络、外部依赖顺序逐层定位:先看load average是否超CPU核数×2,再结合top、mpstat、free、iostat、iftop等工具分析具体瓶颈,最后检查日志与外部服务。

Linux生产环境故障排查教程_系统瓶颈定位方法论

Linux生产环境出问题,别急着重启或加机器。真正有效的排查,是按顺序一层层缩小范围,从系统整体表现切入,快速锁定到底是CPU、内存、磁盘、网络,还是外部依赖拖了后腿。

看平均负载,判断系统是否真的“忙”

先执行 uptimetop,重点看 load average 三个值(1/5/15分钟)。它反映的是等待运行或正在运行的进程数,不是CPU使用率。

  • nproc 查清当前CPU逻辑核数
  • 若 load average 持续 > CPU核数 × 2,说明系统已过载
  • 若 load 高但 %CPU 并不高,大概率是大量进程卡在不可中断状态(D状态),常见于磁盘IO卡住或内核锁争用

查CPU瓶颈,分清“真忙”和“假忙”

top 中关注 %us(用户态)%sy(内核态)%wa(I/O等待)%id(空闲)

  • %us 高 → 应用计算密集,比如java循环、正则回溯、未优化算法
  • %sy 高 → 系统调用频繁,可能是上下文切换多、锁竞争激烈或驱动异常
  • %wa 高 → CPU在等磁盘或网络响应,此时要立刻转向IO分析
  • mpstat -P ALL 1 查单核是否打满,避免只看全局平均掩盖局部热点

盯内存使用,别只看free字段

运行 free -h,关键看三行:

  • Mem available:真正可用内存(含可回收cache/buffer),比free更真实
  • buff/cache 高不等于有问题,Linux会主动缓存文件加速IO
  • Swap used > 0available Mem 很低 → 内存不足,开始换页,性能明显下降
  • topM 键排序,快速定位内存大户;再结合 ps aux –sort=-%mem | head -10 确认

验磁盘与网络,揪出隐藏IO瓶颈

磁盘瓶颈看 iostat -x 1

  • %util > 70% 表示设备持续繁忙,接近饱和
  • await > 10ms(普通SATA)或 > 1ms(NVMe)说明响应延迟高
  • iotop -o 找出实际在读写的进程

网络瓶颈看 iftop -Pnload

  • 确认流量是否超网卡带宽(如千兆口跑满125MB/s)
  • ss -s 查看连接总数、TIME-WAIT数量是否异常
  • netstat -icat /proc/net/dev接口错误包(RX-ERR/TX-ERR)是否上升

收尾:别漏掉外部依赖和日志线索

当系统指标都正常,但业务仍卡顿,就要跳出本机:

  • 检查数据库连接池是否耗尽、慢查询是否激增
  • 确认redis等缓存是否雪崩或连接超时
  • 翻查 /var/log/messagesdmesg -T 是否有OOM killer日志、硬件报错或内核警告
  • 应用日志里搜索 “timeout”、“Connection refused”、“Too many open files” 等关键词
text=ZqhQzanResources