资源开销
ServerBee Agent 与 Server 的历史 CPU、内存、磁盘和网络观测记录。
本页保留 ServerBee Agent 与 Server 的历史资源观测记录,不代表当前版本的基准测试。数据库增长估算见存储与容量规划。
来源为本页原有的 v0.9.3 测量笔记,除另有说明外,日期为 2026-05-19。原始测试日志及二进制的具体链接方式未随笔记归档。内存和 CPU 数值是历史观测,Agent 网络用量则是按协议估算。设置资源限制前,请测量实际部署版本、分配器、Agent 数量、启用的采集器和查询负载。
Agent
原笔记记录的环境为:4 核 AMD EPYC 7B13 / 8 GB / Ubuntu 24.04(KVM),Agent v0.9.3,采集间隔 3 秒,启用温度采集,经 HTTPS WebSocket 上报至远端 Server。
| 资源 | 冷启动(约 90 秒) | 运行 8 小时后 | 范围 |
|---|---|---|---|
| 内存(systemd cgroup) | ~4.3 MB,峰值 ~5.1 MB | ~27 MB,峰值 ~28 MB | Cgroup 统计,与进程 RSS 口径不同 |
内存(ps RSS) | ~10 MB | ~34 MB | 进程驻留内存,包含共享映射 |
| CPU | ~0.7%(单核) | ~0.5%(单核) | 当时的采集负载 |
| 线程数 | 10 | 9–10 | 当时的 tokio runtime |
| 二进制大小 | ~11 MB | — | 历史 linux-amd64 二进制 |
| 网络 | 估算 ≤ 1–2 KB/s | — | 每 3 秒一条 SystemReport JSON,加上 ping/pong;随指标项变化 |
八小时观测期间内存有所增长。仅凭这些读数无法确认长期平台,也无法区分分配器驻留与内存泄漏。主机操作系统不能证明二进制实际使用的 libc。
Server
历史 Railway 观测
原页面记录过一个接入少量 Agent、环境中存在 MALLOC_ARENA_MAX=2 的实例,内存约 140–170 MB;另一次运行记录为 2–3 天后达到 800 MB–1 GB。笔记没有记录具体构建链接方式、Agent 数量、查询负载或受控对比。这些历史读数不能证明环境变量导致了差异,也不构成当前版本的内存目标。
历史自托管空载观测
v0.9.3 笔记描述了同一 VPS 上近乎空载、没有活跃 Agent 连接的 Server:
| 资源 | 观测值 | 范围 |
|---|---|---|
| 内存(systemd cgroup) | ~15 MB,峰值 ~23.8 MB | 历史空载观测,不代表带负载的资源需求 |
| 线程数 | 7 | 当时的 tokio runtime |
| CPU | 近乎为 0 | 空载负载 |
| 二进制大小 | ~47 MB | 历史 linux-amd64 二进制,内嵌前端 SPA |
分配器与构建范围
MALLOC_ARENA_MAX 适用于 glibc 分配器。官方 Linux release 二进制和 Docker 镜像使用 musl,该变量对其无效,因此标准部署示例不设置它。自定义 glibc 构建应根据自身测量评估分配器行为,不能套用旧 Railway 数值。
另一项发布工具链回归影响了 v1.0.0-beta.1:记录中的空载 Server 因 Zig 0.16 内置分配器的跨线程释放行为,每天增长约 20 MB。发布工作流现已固定 Zig 0.15.2,修正随 v1.0.0-beta.2 发布。原因、观测范围和复现方法见发布版本内存浸泡流程。这与上方 v0.9.3 数值是不同的观测。请使用当前版本,并在实际部署构建上排查持续增长。
磁盘
Server 磁盘占用包括 SQLite、上传的品牌图片、下载的 GeoIP/ASN MMDB 文件和配置。数据库增长取决于 Agent 数量、启用功能和保留策略。数据库估算见存储与容量规划,SQLite 之外的文件见备份与恢复。除基础数据库外,还需为 WAL、突发写入及完整备份预留空间。
注意事项
- 历史空载 Server 读数不代表大量 Agent 或高查询负载下的占用。
- Cgroup 内存与进程 RSS 统计范围不同,应按相同口径比较。
- Agent 网络用量是估算,没有对应的抓包基准测试。
- 八小时内读数平稳不能证明长期稳定。排查异常增长时应同时考虑负载与分配器。