必须手动开启「启用历史数据记录」才能查看历史CPU/内存曲线,否则仅显示最近15分钟实时数据;开启后每5分钟采集一次,保留30天,不补录旧数据。

宝塔面板里看不到历史 CPU/内存曲线?
默认开启的「实时监控」只显示最近 15 分钟数据,想查昨天下午负载飙高的原因,得先打开历史数据采集功能。它默认是关闭的,且不提示、不告警——这是绝大多数人卡住的第一步。
- 必须手动开启:进入「监控」→「设置」→ 勾选「启用历史数据记录」,保存后才会开始存档
- 采集粒度固定为
每5分钟一次,不可调;数据保留天数默认30天,可在同一页面修改 - 开启后不会补录旧数据,重启面板或服务器也不影响已采集记录
- 如果开启后仍无历史曲线,检查磁盘空间是否不足——
/www/server/panel/data/下的system.db文件写满会导致停采
在「监控」页对比两个时间点的负载数据
宝塔不支持拖拽选区或双时间轴对比,只能靠人工切换时间范围+肉眼比对数值,但有技巧可减少误差。
- 点击右上角「时间选择器」,选「自定义时间」,输入起止时间(格式必须为
YYYY-MM-DD HH:MM,不支持中文或“昨天”这类相对词) - 同一页面内,
系统负载和CPU使用率是分开图表,需横向滚动屏幕才能并排看——别只盯着上面那个图 - 注意时区:宝塔读取的是服务器本地时间,若你在北京却把服务器时区设为 UTC,所有时间戳会偏移 8 小时
- 峰值数值藏在图表下方小字里,比如「最高负载:4.23(14:22)」,这个时间点才是真实高负载时刻,不是鼠标悬停位置
导出数据到 Excel 做深度对比
面板内置导出只支持 CSV,但字段少、没时间戳、缺单位,直接打开容易误读。
- 导出路径:「监控」→「设置」→「导出历史数据」,生成的文件名类似
system_20240520.csv - 关键字段只有三列:
time(时间戳,精确到秒)、cpu(百分比,无%符号)、load(1分钟平均负载),没有内存、磁盘 IO 等其他指标 time字段是 Unix 时间戳(如1716201600),Excel 默认无法识别,需用公式=A2/86400+DATE(1970,1,1)转成可读时间- 如果要对比多个日期,别合并 CSV——不同天的数据导出后字段顺序可能不一致,建议用 Python 或命令行统一处理:
awk -F, 'NR==1 || /2024-05-20/ {print}' system_*.csv > merged.csv
为什么 top 或 htop 显示的负载和宝塔不一致?
不是数据错了,是统计口径不同。宝塔的「系统负载」取自 /proc/loadavg 的第一个值(1分钟平均),而 top 默认刷新周期是 3 秒,瞬时波动大;htop 如果开了「树状视图」或「CPU 按核心分列」,视觉上也会显得更高。
- 确认一致性最简单的方法:在终端执行
cat /proc/loadavg,看输出第一列数字,和宝塔当前「系统负载」数值是否基本一致(允许 ±0.1 浮动) - 宝塔的 CPU 使用率是基于
/proc/stat计算的 5 分钟均值,而top默认是最近一次采样的结果,两者本就不该完全相等 - 如果差异持续超过 20%,检查是否启用了「宝塔防火墙」插件——它的日志扫描进程
bt-firewall有时会干扰采样精度