存储与容量规划

ServerBee 常用部署场景的数据库容量计算公式和 30 天存储估算。

本页介绍 ServerBee 的 SQLite 数据库如何随时间增长,并为常见的 20 服务器部署场景提供 30 天存储估算。

这些数值于 2026 年 4 月通过临时 SQLite 数据库测量得出,采用当时的仓库数据库结构和默认保留策略。请将本页作为注明日期的容量规划基准,而不是对后续数据库结构或工作负载的保证。结果描述的是全新部署运行 30 天后的主数据库文件大小。在生产环境中,请额外预留 10% 到 20% 的空间作为 SQLite WAL(预写日志)和临时增长的缓冲。

假设条件

本页所有估算使用以下基线条件:

  • 20 台服务器
  • 从全新部署开始运行 30 天
  • Agent 持续连接
  • Agent 上报间隔为 3 秒
  • 服务器原始指标写入器每 60 秒 为每台服务器写入一条记录
  • 默认保留策略:
    • 原始指标:7 天
    • 小时聚合数据:90 天
    • GPU 记录:7 天
    • Ping 记录:7 天
    • 网络探针原始记录:7 天
    • 网络探针小时记录:90 天
    • 服务监控记录:30 天
  • 磁盘 I/O 和温度监控已启用
  • 除非明确说明,否则不包含审计日志突发增长、大型任务输出或异常的 Docker 事件波动带来的额外增长

哪些功能会影响数据库大小

并非每个功能都会产生持续的数据库增长。

功能默认频率保留时间主表说明
基础监控Agent 每 3 秒上报,每 60 秒持久化原始 7 天,小时 90 天records、records_hourly、traffic_*、uptime_daily连接的服务器始终存在
Ping 任务每任务 60 秒7 天ping_records随任务数 × 服务器数扩展
网络探针每目标 60 秒原始 7 天,小时 90 天network_probe_record、network_probe_record_hourly随服务器-目标分配数扩展
服务监控每监控 300 秒30 天service_monitor_record随监控数扩展
GPU 监控每 GPU 设备 3 秒7 天gpu_records这是最大的乘数之一
Docker 事件事件驱动7 天docker_event除非容器频繁变更,否则占用很小
终端 / 执行 / 文件管理器用户驱动混合audit_logs、task_results通常比时序数据小得多

开启终端、执行、文件管理器或 Docker 管理等功能不会自动创建大型时序表。持续增长来自那些主动写入采样结果的功能。

30 天容量估算公式

基于上述假设,30 天数据库大小可通过以下公式估算:

S_30d =
70,541,312
+ 48,974,507 × P
+ 2,373,018 × T
+ 1,593,958 × M
+ 41,525,248 × G
+ 285 × E

其中:

  • P = 应用于全部 20 台服务器的 60 秒 Ping 任务 数量
  • T = 总的 服务器-目标网络探针分配数
    • 如果每台服务器目标数相同,则 T = 20 × 每台服务器目标数
  • M = 总的 300 秒服务监控数
  • G = 总的 GPU 设备数
  • E = 30 天窗口期内写入的 Docker 事件总数

功能乘数

这些系数来自实际测量的 SQLite 文件,而非粗略估算:

组件精确大小贡献约等大小
20 台服务器的基础监控70,541,312 B67.27 MiB
1 个跨全部 20 台服务器的 Ping 任务48,974,507 B46.71 MiB
1 个网络探针分配2,373,018 B2.26 MiB
1 个服务监控1,593,958 B1.52 MiB
1 个 GPU 设备41,525,248 B39.60 MiB
1 个 Docker 事件285 B0.28 KiB

基础监控细目

在没有额外 Ping 任务、网络探针、服务监控或 GPU 的情况下,30 天占用空间主要来自原始指标表及其索引:

对象精确大小约等大小
records48,701,440 B46.45 MiB
idx_records_server_id_time16,482,304 B15.72 MiB
records_hourly3,485,696 B3.32 MiB
idx_records_hourly_server_time1,163,264 B1.11 MiB
traffic_hourly + 索引512,000 B0.49 MiB
traffic_daily + 索引90,112 B0.09 MiB
uptime_daily + 索引86,016 B0.08 MiB

场景目录

下表列出 20 台服务器部署的常见 30 天场景:

场景假设条件精确大小约等大小
仅基础监控无 Ping 任务、无网络探针、无服务监控、无 GPU70,541,312 B67.27 MiB
基础 + 1 个 Ping 任务1 个跨全部 20 台服务器的 60 秒 Ping 任务119,515,819 B113.98 MiB
基础 + 3 个 Ping 任务全部 20 台服务器的 ICMP + TCP + HTTP217,464,833 B207.39 MiB
基础 + 每台 1 个目标共 20 个网络探针分配118,001,672 B112.54 MiB
基础 + 每台 5 个目标共 100 个网络探针分配307,843,112 B293.58 MiB
基础 + 每台 20 个目标共 400 个网络探针分配(当前上限)1,019,748,512 B972.51 MiB
基础 + 每台 1 个监控共 20 个 300 秒间隔的服务监控102,420,472 B97.68 MiB
基础 + 每台 5 个监控共 100 个 300 秒间隔的服务监控229,937,112 B219.29 MiB
基础 + 每台 1 个 GPU共 20 个 GPU 设备901,046,272 B859.30 MiB
小型生产环境3 个 Ping 任务 + 每台 1 个目标 + 每台 1 个监控296,804,353 B283.05 MiB
中型生产环境3 个 Ping 任务 + 每台 5 个目标 + 每台 2 个监控518,524,953 B494.50 MiB
重型环境(无 GPU)3 个 Ping 任务 + 每台 20 个目标 + 每台 1 个监控1,198,551,193 B1.12 GiB
重型环境(含 GPU)重型环境(无 GPU)+ 每台 1 个 GPU2,029,056,153 B1.89 GiB
最大实用环境3 个 Ping 任务 + 每台 20 个目标 + 每台 5 个监控 + 每台 1 个 GPU2,156,572,793 B2.01 GiB

磁盘预算建议

如果正在为实际部署进行容量规划,请预留比数据库文件本身更多的空间:

  • 以上表作为基础数据库大小
  • 增加 10% 到 20% 作为 WAL 增长和突发写入的缓冲
  • 如果预期有以下情况,请额外增加空间:
    • 大量 Docker 事件
    • task_results 中保留的大型任务输出
    • 具有大型 detail_json 负载的异常频繁的服务监控

示例:

  • 一个 494.50 MiB 的中型环境应预留约 550 MiB 到 600 MiB
  • 一个 1.89 GiB 的含 GPU 重型环境应预留约 2.1 GiB 到 2.3 GiB
  • 一个 2.01 GiB 的最大实用环境应预留约 2.2 GiB 到 2.5 GiB

注意事项和说明

  • 这些估算针对全新部署的前 30 天。某些小时表保留长达 90 天,因此长期运行的部署会继续增长,超过此处显示的 30 天数值。
  • 基础监控估算已包含 traffic_hourly、traffic_daily 和 uptime_daily。
  • GPU 增长是按设备计算的,不是按服务器。一台有 4 个 GPU 的服务器会使 GPU 部分乘以 4。
  • 网络探针增长是按分配计算的,不是按目标定义。一个被 20 台服务器共享的目标算作 20 个分配。
  • Docker 增长是事件驱动的。静态的容器集群几乎不增加空间;容器繁忙的主机可能增加可观的量。

相关文档