← 返回首页

排查服务器负载过高的基本路径

从处理器、内存、磁盘和网络四个方向逐步定位性能瓶颈。

周五下午,监控上的负载突然冲到三十多。群里第一句话是:“要不要先重启?”

我手已经放到命令上了,又停了一下。重启当然可能让曲线掉下来,可现场也会一起消失。于是先泡了杯茶,把那台机器当成一间突然嘈杂的屋子,看看究竟是谁在里面搬桌子。

先别急着怪处理器

我先用 uptime 看负载持续了多久,再打开 top。奇怪的是,处理器并没有跑满,等待时间却很高。继续看 vmstat,磁盘输入输出那一栏一直不安分。

uptime
top
vmstat 1

连续采样比瞄一眼靠谱。瞬时峰值会骗人,持续几分钟的变化才更像线索。iostat 最后指出一块磁盘等待明显偏高,顺着进程查下去,原来是临时统计任务和备份撞到了同一个时间段。

把两个任务错开后,负载慢慢落回正常。没有扩容,也没有重启,只是把两把同时抢门的椅子分开搬了。

这次以后,我给自己留了一个排查顺序:先看整体,再分处理器、内存、磁盘和网络,找到资源后再追具体进程。应用日志要和系统指标对上时间,不能看到哪个进程名字眼熟就先判它有罪。

重启仍然是工具,只是不该成为条件反射。至少在按下去以前,留住进程状态、关键指标和那一段日志。服务器不会开口解释,现场就是它留下的口供。