服务器负载(Load Average)到底怎么看?别再被数字骗了

服务器负载(Load Average)到底怎么看?别再被数字骗了

你输入uptime,看到load average: 2.5, 3.0, 2.8。这是好还是坏?有人告诉你“负载超过1就是有问题”,你慌了。你的服务器负载常年2.5,但跑得好好的。

你被误导了。负载数字本身没意义,要和CPU核心数对比才有意义。


先看一个数据

在一项针对运维人员的调查中,超过60%的人曾错误判断服务器负载状况。有人把4核服务器的负载2.5当作“正常”,有人把1核服务器的负载1.2当作“没问题”。

负载不是绝对数字。4核服务器负载8才到警戒线,1核服务器负载1.5就超了。不看核心数,负载就是废数字。


负载是什么

Load Average是单位时间内,处于运行状态可运行状态(等待CPU)以及不可中断睡眠状态(等待I/O)的平均进程数。

简单说:正在用CPU的进程 + 排队等CPU的进程 + 正在等磁盘/网络的进程。

三个数字分别是1分钟、5分钟、15分钟的平均值。

  • 负载 = 1:刚好有1个进程一直在用CPU,或者多个进程交替但平均占用100%
  • 负载 > CPU核心数:有进程在排队等CPU
  • 负载 < CPU核心数:CPU有闲置

反常识点:负载高不一定因为CPU不够。I/O等待(磁盘慢、网络卡)也会让负载飙升,但CPU使用率可能很低。


负载和CPU核心数的关系

判断标准:负载应该以CPU核心数为参照

CPU核心数负载 < 核心数负载 ≈ 核心数负载 > 核心数
1核正常满载过载
4核正常(<4)满载(≈4)过载(>4)
8核正常(<8)满载(≈8)过载(>8)

4核服务器,负载2.5是正常的,甚至偏低。8核服务器,负载6也是正常的。1核服务器,负载1.5就超了。

查看核心数

bash

nproc
# 或
grep "model name" /proc/cpuinfo | wc -l

所以,负载需要和核心数一起看。只看绝对值,没有任何意义。


负载高但CPU低?看I/O

最迷惑的情况:负载高,但top里CPU使用率很低。

bash

top
# 看%wa列

%wa(I/O等待)高,说明进程在等磁盘读写。硬盘慢,进程排队,负载上去,但CPU闲着。典型场景:

  • 机械硬盘随机读写慢
  • 数据库没加索引,大量全表扫描
  • 日志刷得太频繁
  • 内存不足,频繁swap换入换出

解决方案:换SSD、加索引、加内存。不是换CPU。


三个数字怎么看

load average: 2.5, 3.0, 2.8

  • 1分钟:2.5,最近1分钟的负载
  • 5分钟:3.0,趋势是上升还是下降
  • 15分钟:2.8,长期基线

趋势判断

  • 1分钟 > 5分钟:负载在上升,刚来了一波流量
  • 1分钟 < 5分钟:负载在下降,高峰期过了
  • 三个数字相近:负载稳定
  • 15分钟已经高:持续过载,需要处理

各场景的“正常”负载

场景合理负载(4核)说明
Web服务器<4大部分请求短,负载低
数据库服务器2-6查询密集型,可容忍稍高
离线计算可到6-8批处理,高负载可接受
开发测试机<2闲时多
实时交易系统<2延迟敏感,需留余量

不是所有服务都必须负载<1。离线任务可以用满资源。


实战案例

案例一:负载2.5,CPU 20%

4核服务器,负载2.5,不高。但CPU才20%。为什么负载不低但CPU不高?查iostat -x 1,看到%util接近100%,磁盘在忙。原因是日志写得太多。优化日志输出后,负载降到0.5。

案例二:负载8,CPU 90%

4核服务器,负载8(超了1倍),CPU 90%。确实是CPU不够。升级到8核后,负载降到3,恢复正常。

案例三:负载稳定6,业务正常

8核服务器,负载6(低于8)。业务没投诉。不需要处理。负载不是越低越好,够用就行。


监控告警怎么设

根据CPU核心数来设:

  • warning:负载 > 核心数 × 0.7,持续10分钟
  • critical:负载 > 核心数 × 1.2,持续5分钟

4核服务器:warning 2.8,critical 4.8
8核服务器:warning 5.6,critical 9.6

同时监控CPU使用率和I/O等待,避免误判。


常见误区

误区一:负载不能超过1

错。4核服务器负载4才满载。不谈核心数只谈负载,是耍流氓。

误区二:负载高一定是CPU不够

错。I/O等待(磁盘慢、网络卡)也会让负载高,但CPU闲着。先看%wa再下结论。

误区三:负载越低越好

错。负载太低说明资源浪费。合适的负载是够用有余量,不是越低越好。


最后一句

负载本身不是问题。问题是负载和CPU核心数不匹配。

下次看到load average,先确认CPU核心数。4核服务器负载2.5?正常。1核服务器负载2.5?出事了。

把这条规则记住:负载不看绝对数字,要看和核心数的比值。没这个参照系,负载数字就是噪音。参照系对了,你才不会误判。

首页

网站访问日志分析:从IP到用户行为

2026-6-10 16:25:50

实操指南知识库

定制化服务器的兴起:满足特定行业需求的硬件设计策略

2025-1-13 15:52:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧