Linux 服务器负载高,你的排查思路?

运维/DBA第 1 / 13 题答题框架
参考思路:load 与 CPU 核数关系→top/vmstat 定位(D vs R 状态进程)→CPU/IO/内存哪类瓶颈→关联变更与监控→处置(限流/重启/扩容)与根因回收。

五个经典回答示范

回答一 · 校招应届版

我的排查路径:先看 load 与 CPU 核数的关系——4 核机器 load 持续 6 以上才算高;再 top/vmstat 区分瓶颈类型——R 状态多是 CPU 密集、D 状态多说明 IO 等待(load 高但 CPU% 不高是典型 IO 特征);定位到进程后下钻——应用(循环、GC)还是系统(swap、磁盘慢);对照时间线查变更与监控历史。处置先止血再查因。

回答二 · 1-3年经验版

我讲一次案例:业务反馈机器卡,load 25(8 核)。top 看 CPU us 只有 30%,si 占 20%,sy 30%——软中断与系统调用高;D 状态进程十几个堆在数据库写。定位是磁盘 IO 打满(iostat util 100%):根因是定时任务集中凌晨全量导出。处置:导出任务挪到从库并错峰,load 回落到 3。复盘加了 IO 水位告警。load 高的第一直觉不该是加机器,而是先分类瓶颈。

回答三 · 资深版

资深视角:load 语义要吃透——Linux load 包含不可中断(D 状态)进程,所以它同时反映 CPU 与 IO 压力,这正是诊断入口:load 高 CPU 低 → IO 或换页瓶颈,看 iostat/vmstat 的 b 与 wa;load 高 CPU 高 → 计算瓶颈,perf/top 找热点;load 高但两者都低 → D 状态堆积,查锁与 NFS 等外设等待。体系化:容量水位基线、异常自动分类告警、压测验证容量边界——从救火到免疫。

回答四 · 追问应对

追问『D 状态进程怎么处理』:不可 kill(忽略信号)除非解决其等待资源,strace 或 /proc/PID/stack 看阻塞点,NFS hang 常见;『load 多少该告警』:按核数比持续超 0.7-1 倍告警,看趋势斜率比绝对值更早发现异常;『虚拟机场景注意什么』:宿主机争抢——steal time 高说明被邻居挤占,找云厂商迁移。

回答五 · 反面示范

『load 高就是 CPU 不够,重启大法先试一下,不行就加机器加配置,基本能好,原因等有空再查。』——点评:重启掩盖问题且破坏现场;load 高加 CPU 在 IO 瓶颈场景无效——白花钱;『有空再查』的问题会在更坏的时刻回来。

怎么练这道题
  1. 打开 模拟练习,选择「运维/DBA」方向,限时 3 分钟作答本题。
  2. 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
  3. 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。

这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。

开始限时演练