查历史系统平均负载峰值需用 sar -q 读取 sysstat 归档日志(如 sa15),筛选 ldavg-5 连续3点 ≥ cpu核数×1.5 且 runq-sz 持续超核数,再交叉验证 cpu 和内存使用率。

要查历史系统的平均负载峰值记录,核心是用 sar -q 读取已归档的二进制日志文件,再结合时间筛选和统计逻辑识别“峰值”——不是单次最大值,而是有业务意义的持续高负载段。
确认历史数据是否存在
系统必须已启用 sysstat 并持续采集,日志才存在:
- 检查服务状态:
systemctl is-active sysstat应返回active - 查看对应日期文件:
ls -l /var/log/sysstat/sa$(date -d "2026-07-15" +%d)(例如查7月15日就是sa15) - 若文件缺失,说明当天未采集(cron失效、磁盘满、服务停过),无法回溯
提取指定日期的平均负载序列
运行命令获取完整负载时间线:
-
sar -q -f /var/log/sysstat/sa15→ 输出每10分钟一次的ldavg-1、ldavg-5、ldavg-15 - 加时间范围缩小结果:
sar -q -s 09:00:00 -e 18:00:00 -f /var/log/sysstat/sa15 - 注意:
-f必须放在所有选项最前面,否则被忽略
识别真正有意义的“峰值”
不能只看单行最大值,要结合上下文判断是否构成压力事件:
-
ldavg-5连续3个采样点 ≥ 该CPU核心数 × 1.5,才算有效峰值(例如4核机器,连续30分钟ldavg-5 ≥ 6) - 同步看
runq-sz:若峰值时段runq-sz持续 > CPU总核数,说明进程排队严重 - 交叉验证其他指标:
sar -u -f /var/log/sysstat/sa15查此时CPU是否也满载,或sar -r -f /var/log/sysstat/sa15看内存是否耗尽
快速定位当日最高负载点
用 shell 命令辅助提取数值极值(适用于排查后快速汇总):
- 提取
ldavg-5列并找最大值:sar -q -f /var/log/sysstat/sa15 | awk '$1 ~ /^[0-9]/ {print $4}' | sort -n | tail -1 - 但更实用的是查对应时间点:
sar -q -f /var/log/sysstat/sa15 | awk '$1 ~ /^[0-9]/ && $4 > 8 {print $1,$2,$4}'(例:找 >8 的时刻) - 输出含时间戳,可直接关联应用日志做根因分析











