Linux 系统负载全面监控指南✨
服务器运行久了经常会出现卡顿、响应缓慢的问题,大概率是系统资源负载超标啦🥺。今天带大家完整搞懂 Linux 系统负载含义、查看命令、压力测试工具以及日常监控优化方案,新手也能轻松看懂、上手实操!
一、什么是系统负载平均值?
Linux 内核会以活动请求数的指数移动平均值来表示。📊
二、查看系统负载常用命令
2.1 lscpu:查看 CPU 硬件信息
先确认服务器 CPU 核心数量,才能正确判断负载高低💻
# 查看CPU
[liulele@centos7 ~ 18:51:25]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
座: 2
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 126
型号名称: Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
步进: 5
CPU MHz: 1497.602
BogoMIPS: 2995.20
超管理器厂商: VMware
虚拟化类型: 完全
L1d 缓存: 48K
L1i 缓存: 32K
L2 缓存: 512K
L3 缓存: 8192K
NUMA 节点0 CPU: 0,1
.....
重点看输出里的 CPU(s) 参数,代表总逻辑核心数,超线程核心也会单独计数。
2.2 uptime:快速查看系统负载
最简单的负载查询命令,一行展示开机时长、在线用户、三段负载值
1分钟负载、5分钟负载、15分钟负载
# 查看负载
[liulele@centos7 ~ 18:51:44]$ uptime
18:52:40 up 10:06, 1 user, load average: 0.88, 0.94, 0.96
我们可以手动制造 CPU 压力,观察负载上涨变化:
# 给系统加负载
[liulele@centos7 ~ 18:55:29]$ md5sum /dev/zero &
[1] 11194
[liulele@centos7 ~ 18:55:52]$ md5sum /dev/zero &
[2] 11195
# 等30秒左右
[liulele@centos7 ~ 18:56:28]$ uptime
18:56:30 up 10:10, 1 user, load average: 1.79, 1.15, 1.02
#解决md5sum进程,因为md5sum是反复运行的,需要先杀父进程在杀子进程
[liulele@centos7 ~ 19:00:27]$ ps -ef|grep md5sum
liulele 11195 11113 73 18:55 pts/1 00:03:25 md5sum /dev/zero
liulele 11276 11113 0 19:00 pts/1 00:00:00 grep –color=auto md5sum
[liulele@centos7 ~ 19:00:33]$ kill 11113 11195
[liulele@centos7 ~ 19:00:46]$ ps -ef|grep md5sum
liulele 11278 11113 0 19:00 pts/1 00:00:00 grep –color=auto md5sum
负载数值解读逻辑
系统 CPU 核心数是判断负载是否过载的基准:
举个例子:服务器为 4 核 CPU
负载数据:2.92, 4.48, 5.20
平均单核心负载:0.73(2.92/4) 1.12(4.48/4) 1.30(5.20/4)
行业理想负载标准:单核心 75% 左右为健康状态✅
lscpu:查看CPU
top:查看为什么负载高
Uptime:查看系统负载
负载高不高:负载数/cpu内核个数>1 就高 <1 就充足
-
负载<核心数:系统资源充足,运行流畅
-
负载≈核心数:资源打满,刚好饱和
-
负载>核心数:任务排队,服务器卡顿、响应延迟
负载三大时间维度含义
- 1 分钟负载:反映系统即时压力,突发波动看它
- 5 分钟负载:短期平均负载,判断临时峰值
- 15 分钟负载:长期运行状态,判断系统常态压力
2.3 top:动态实时监控进程与资源🌟
top 是运维最常用的实时监控工具,自动刷新,一站式查看任务状态、CPU、内存、进程占用。

top整体结构输出解释
系统摘要区(前 5 行)字段解释
top – 10:20:30 up 12 days, 2:30, 2 users, load average: 0.15, 0.20, 0.10
Tasks: 230 total, 1 running, 229 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.2 us, 0.5 sy, 0.0 ni, 98.0 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 7982.4 total, 1234.5 free, 4567.8 used, 2180.1 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3012.3 avail Mem
第 1 行:系统时间、运行时长、负载(同 uptime)
- 10:20:30:当前系统时间
- up 12 days, 2:30:系统已运行时间
- 2 users:当前登录用户数
- load average: 0.15, 0.20, 0.10:1 分钟、5 分钟、15 分钟平均负载(等待 CPU 的任务队列长度)
第 2 行:进程统计(Tasks)
- 230 total:系统总进程数
- 1 running:正在运行(R 态)进程数
- 229 sleeping:睡眠(S 态)进程数
- 0 stopped:暂停 / 停止进程数
- 0 zombie:僵尸进程数(Z),非 0 要排查
第 3 行:CPU 整体占用(% Cpu (s))
- us:用户空间 CPU 占比(普通用户进程)
- sy:内核空间 CPU 占比(系统调用、内核线程)
- ni:nice 调整过优先级的用户进程占比
- id:空闲 CPU 占比,越大越闲
- wa:IO 等待占比,高 = 磁盘 / 网络瓶颈 (cpu等待磁盘启动的时间)
- hi:硬中断(Hardware IRQ)占比
- si:软中断(Software IRQ)占比
- st:被虚拟机偷走的 CPU(steal),物理机一般 0
第 4 行:物理内存(Mem)
单位:MiB(或 KiB,视版本)
- total:总物理内存
- free:完全空闲内存
- used:已用内存(含进程 + 内核 + 缓存)
- buff/cache:缓冲区 + 文件缓存,可回收,不算真正占用
第 5 行:交换分区(Swap)+ 可用内存
- total:Swap 总大小
- free:Swap 剩余
- used:Swap 已用,持续上涨 = 物理内存不足
- avail Mem:实际可用内存(free + 可回收 cache),最有参考价值
进程列表区(各列)完整解释
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID:进程唯一 ID(kill PID 杀进程)
USER:进程所属用户名
PR:调度优先级,越小越优先;rt= 实时优先级
NI:nice 值,-20~19;负 = 高优先级,正 = 低优先级
VIRT:虚拟内存(KB)
进程申请的地址空间,含代码、数据、共享库、swap;不等于实际物理内存
RES:常驻物理内存(KB)
进程实际占用、未被 swap 出去的物理内存(关键指标)
SHR:共享内存(KB)
与其他进程共享的库 / 内存段
S:进程状态
- R:运行中(Running)
- S:可中断睡眠(Sleeping,等待事件)
- D:不可中断睡眠(通常 IO 阻塞)
- T:暂停 / 跟踪(Stopped)
- Z:僵尸进程(Zombie,需回收)
%CPU:CPU 使用率(多核可 > 100%)
%MEM:物理内存占比(RES / 总内存)
TIME+:累计 CPU 时间(1/100 秒精度)
COMMAND:进程启动命令 / 程序名
高频实用快捷键(记好超省事!)
常用的命令:数字1,P,M,k,q,h

三、stress 压力测试工具:模拟高负载场景🧪
Linux 中的 stress 工具用于对系统进行压力测试,可模拟 CPU、内存、I/O 和磁盘等资源的高负载状态。通过指定参数(如 -c 压 CPU、-m 压内存)可创建负载,帮助发现系统在压力下的稳定性问题,常用于性能调优或硬件验证。
3.1 安装工具(CentOS7)
[liulele@centos7 ~ 10:27:15]$ sudo yum install -y stress
3.2 基础参数说明
| -c N | 模拟 N 个 CPU 满载进程 |
| -m N | 模拟 N 个内存占用进程 |
| –vm-bytes | 指定单次占用内存大小 |
| -d N | 模拟 N 个磁盘 IO 读写进程 |
| –timeout N | 压力测试持续 N 秒后自动停止 |
3.3 实操案例
案例 1:CPU 压力测试(占满 2 核 CPU)
# 可以stress –help查看
# -c是CPU ,进行两个cpu压测
[liulele@centos7 ~ 10:28:15]$ stress -c 2
stress: info: [4257] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

新开终端执行 top,能看到两个 stress 进程 CPU 占用 100%,系统负载同步飙升。
案例 2:内存压力测试(占用 1G 内存)
# -m :mem 内存 1:1个内存压力进程 –vm-bytes 1G :每个进程占用1GB内存
[liulele@centos7 ~ 10:31:41]$ stress -m 1 –vm-bytes 1G
stress: info: [4269] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
[liulele@centos7 ~ 10:31:41]$ free -m

执行后再次 free -m,会看到 used 内存大幅上涨
案例 3:磁盘 IO 压力测试
1). # 消耗磁盘IO
#-d 1 : =(-hdd 1) :启动1个磁盘压力进程
# –hdd-bytes 2G : 每个进程每次写2GB的临时文件
[liulele@centos7 ~ 10:35:09]$ stress -d 1 –hdd-bytes 2G
stress: info: [4308] dispatching hogs: 0 cpu, 0 io, 0 vm, 1 hdd
# 监视活动状态百分比,%util
# sysstat :系统性能监控工具集,包含常有的命令:
#iostat:监控磁盘的I/O、CPU负载
#mpstat:查看多核CPU状态
#sar:系统综合性能统计,历史负载查询
# iotop:磁盘 I/O 专属监控工具
[liulele@centos7 ~ 10:35:09]$ yum install -y sysstat iotop
# 监控磁盘读写速度,重点关注rd_sec/s和wr_sec/s,单位是0.5k/每秒,每个sec(sector)是512Byte。
# sar:统计系统性能数据 -d:只输出磁盘I/O统计 -p:易读的设备名(如 sda、sdb) 1:1:采样间隔 1 秒
[liulele@centos7 ~ 10:35:09]$ sar -dp 1
2).# 监控进程读写:左右方向键调整排序列,'>' 代表当前排序列
[liulele@centos7 ~ 10:35:09]$ iotop
监控磁盘读写,重点关注rd_sec/s和wr_sec/s,单位是0.5k/每秒,每个sec(sector)是512Byte。

监控进程读写:左右方向键调整排序列,‘>’ 代表当前排序列

重点观察输出里的%util,数值接近 100% 代表磁盘 IO 打满。
四、网络负载监控
大文件传输、带宽跑满也会拖慢服务器响应,用 sar 监控网卡流量📡
# 传送一个大size的文件
[liulele@centos7 ~ 10:35:09]$ wget http://192.168.50.200/course-materials/iso/CentOS-7-x86_64-DVD-2207-02.iso
# 监控带宽
#sar -n:网络
[liulele@centos7 ~ 10:35:09]$ sar -n DEV 1
......
14时29分07秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
14时29分08秒 ens32 69961.00 5404.00 96338.71 513.95 0.00 0.00 0.00
14时29分08秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
14时29分08秒 virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
14时29分08秒 virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
......
rxkB/s:接收流量,txkB/s:发送流量,数值持续走高代表带宽占用严重。
测试方式:内网下载大镜像文件,同步观察流量指标变化。
五、Linux 系统监控完整运维建议📝
1. 实时快速排查(单机临时查看)
日常排查卡顿优先用这组命令:
- CPU / 进程:top、htop
- 磁盘 IO:iostat、sar -dp 1
- 内存:free -h
- 网络:sar -n DEV 1
2. 长期集群监控方案
如果管理多台服务器,手动输入命令效率太低,推荐专业监控平台:
- Prometheus + Grafana:轻量、自定义可视化图表,适合云服务器
- Zabbix:传统全能监控,自带告警、模板,中小企业常用
- Nagios:极简轻量,侧重服务存活告警
3. 配置告警阈值,提前规避故障
提前设置指标警戒线,资源超标自动推送通知(邮件 / 企业微信 / 钉钉):
- CPU:持续 5 分钟占用>80% 触发告警
- 磁盘:剩余空间不足 10% 告警
- 内存:可用内存低于 20% 告警
- IO:磁盘 util 持续 90% 以上告警
4. 配套监控优化小点
结尾
系统负载是运维判断服务器健康度最直观的指标之一,分清 CPU 负载和 IO 负载的区别,配合 stress 工具做压力测试,再搭配监控告警,就能轻松搞定服务器性能运维啦🥳!





