跳转到内容
返回官网

EMS Builder 在 AFE-E630 上的性能测试报告

报告版本: v1.3
测试日期: 2026-07-29
报告日期: 2026-07-30
统计口径: 每场景采集 2,002 次,忽略首尾样本,仅统计 sample_no=2~2001 的 2,000 次有效资源样本
关联手册: Edge-EMS Builder 性能测试手册

✅ AFE-E630 推荐运行场景:S3.5
在本轮 6 个实测场景中,S3.5 的负载能力、任务时延与整机资源余量最均衡。推荐采用变化存储(数值不变时最迟 10 秒保存),并将以下负载作为当前已验证的推荐运行配置。
📡
5,000 点/秒
数据采集配置量
🧮
30 个
聚合运算
⚡
90 次/秒
Trigger 目标
☁️
20 次/秒
MQTT 任务目标
🤝
10 次/秒
协作任务
💾
变化存储
最迟 10 秒保存
🧠
50.16% / 71.09%
整机 CPU 平均 / P95
🗄️
40.49% / 41.41%
整机内存平均 / P95
⏱️
56 ms
Trigger P95
📨
77 ms
MQTT P95

每次 Trigger 执行代表 1 次设备控制、1 次本地告警与 MQTT 告警,以及 1 次聚合数据写入。Edge-EMS Builder 会根据设备内存为 PostgreSQL 分配资源,因此不同设备、数据库规模及缓存状态下的内存占用可能存在明显差异。

推荐 AFE-E630 按 S3.5 场景运行:5,000 点/秒、30 个聚合运算、90 次 Trigger/秒、20 次 MQTT/秒、10 次协作任务/秒,并启用 10 秒变化存储。

S3.5 实测 Trigger 为 89.97 次/秒、MQTT 为 19.98 次/秒;Trigger / MQTT P95 分别为 56 ms 和 77 ms。整机 CPU P95 为 71.09%,整机实际内存 P95 为 41.41%,且本场景没有出现采样超时。

面向长期生产运行,建议在 S3.5 已测负载上保留约 20% 工程余量,初始容量可按不高于约 4,000 点/秒、72 次 Trigger/秒、16 次 MQTT/秒、8 次协作任务/秒规划。该建议是由实测配置折算的工程值,并非单独执行过的测试场景;正式上线前仍应使用项目实际脚本、消息大小和数据库历史量复测。

图标 场景 结论
🟢 S1 基准场景通过,资源和任务时延均有充足余量。
🟢 S2 通过,实时存储下 2,000 点/秒运行平稳;出现 1 次采样超时。
🟢 S2.5 通过,变化存储相较 S2 明显降低 CPU 压力,且没有采样超时。
🟡 S3 任务指标通过,但整机 CPU P95 为 81.06%,接近持续运行边界,并出现 2 次采样超时。
🟢 S3.5 综合表现最佳,作为 AFE-E630 当前推荐场景。
🔴 S6 仅适合作为短时压力预检;整机 CPU P95 为 94.02%,MQTT 处理量低于 99% 推荐线,并出现 11 次采样超时。
  • 本轮共测试 S1、S2、S2.5、S3、S3.5、S6 六个场景,其他场景不纳入数据表、比较和结论。
  • S3.5 在 5,000 点/秒配置负载下,Trigger 达成率为 99.97%,MQTT 达成率为 99.90%;Trigger / MQTT P95 分别为 56 ms 和 77 ms。
  • S3 与 S3.5 的业务负载相同。启用变化存储后,S3.5 的整机 CPU 平均值由 57.95% 降至 50.16%,P95 由 81.06% 降至 71.09%,更适合持续运行。
  • S6 的 Trigger 达成率为 99.49%,但 MQTT 达成率为 98.73%;整机 CPU P95 为 94.02%,峰值达到 100%,不建议作为持续生产配置。
  • 所有场景的 Trigger 总体 P99 均低于 200 ms,但仍出现约 10~12 秒的单次长尾。S6 的 MQTT P99 为 236.62 ms,已超过 200 ms。
  • 本轮每个场景仅保留 2,000 秒(约 33 分 20 秒)有效样本,适合性能对比,但不能替代 72 小时稳定性测试。

监控采用次数计数。每个场景的资源原始数据均包含 sample_no=1~2002:

忽略:sample_no = 1
统计:sample_no = 2~2001,共 2,000 次
忽略:sample_no = 2002

剔除首尾样本可避免开始和结束时不足完整一秒的数据进入统计。Trigger 与 MQTT 总体结果均以 2,000 秒为分母;即使某一秒没有任务记录,该秒仍计入平均处理量,避免只统计有数据秒而高估吞吐。

以下 5 个服务合并视为一个完整 Edge-EMS Builder:

服务 作用
cb_core 数据采集与核心通信
cb_nginx CommBridge Web / 反向代理
cb_backend CommBridge 后端
ems_backend EMS Builder 计算、策略与业务逻辑
ems_postgresql EMS Builder 数据存储

每个 sample_no 先合计 5 个服务,再从 2,000 个合计值计算平均、P95、P99 和峰值,不将各服务在不同时刻出现的独立峰值直接相加。

  • 五服务 CPU 原始值采用单核等效百分比;AFE-E630 为 4 核设备,因此“Edge-EMS Builder 4 核等效 CPU”= 五服务 CPU 合计 ÷ 4。
  • “整机 CPU”使用工作簿中的 _system_total,表示全部 CPU 容量归一化后的 0~100% 占用,是判断设备容量的主要指标。
  • “Edge-EMS Builder 归属内存”是五个服务 cgroup 归属内存的合计;共享页和缓存可能被重复归属,因此该值可高于整机实际已用内存,不能直接除以物理内存作为容量占用率。
  • “整机实际内存”按 MemTotal - MemAvailable 计算,是判断物理内存余量的主要指标。
  • Trigger / MQTT 的平均值和 P50、P95、P99 基于有效区间内的全部任务记录,不是每秒平均值的分位数。
  • 各工作簿均通过“汇总前测试负载已关闭”校验,Trigger、MQTT 与 CommBridge 均在汇总前关闭并等待 30 秒。
项目 配置
设备型号 AFE-E630
CPU Arm Cortex-A55,4 核
内存 3.81 GB DDR4
操作系统 JelinaOS,基于 Debian 11
存储 eMMC
软件版本 CommBridge-rc-2026-07-08T17-52-07;EMS Builder v1.2;PostgreSQL v18.3
网络 局域网;MQTT / TCP
监控采样 每秒采集 1 次;每场景 2,002 次,统计中间 2,000 次
测试数据源 perf_S1_20260729_171807.xlsx、perf_S2_20260729_175426.xlsx、perf_S2.5_20260729_183152.xlsx、perf_S3_20260729_190918.xlsx、perf_S3.5_20260729_194703.xlsx、perf_S6_20260729_202445.xlsx
场景 数据采集 聚合运算 普通 Trigger 100 ms Trigger Trigger 目标 MQTT 目标 协作任务 存储策略
S1 500 点/秒 10 10 次/秒 0 10 次/秒 5 次/秒 0 次/秒 实时
S2 2,000 点/秒 20 20 次/秒 2 40 次/秒 10 次/秒 2 次/秒 实时
S2.5 2,000 点/秒 20 20 次/秒 2 40 次/秒 10 次/秒 2 次/秒 变化存储(10 秒)
S3 5,000 点/秒 30 50 次/秒 4 90 次/秒 20 次/秒 10 次/秒 实时
S3.5 5,000 点/秒 30 50 次/秒 4 90 次/秒 20 次/秒 10 次/秒 变化存储(10 秒)
S6 5,000 点/秒 20 50 次/秒 10 150 次/秒 30 次/秒 15 次/秒 实时

“数据采集”是场景配置负载。当前工作簿未提供逐点采集成功数,不能将配置值表述为已经独立验证的成功入库吞吐量。

场景 有效统计区间 有效时长
S1 2026-07-29 17:18:09 ~ 17:51:29 2,000 秒
S2 2026-07-29 17:54:29 ~ 18:27:49 2,000 秒
S2.5 2026-07-29 18:31:54 ~ 19:05:14 2,000 秒
S3 2026-07-29 19:09:20 ~ 19:42:40 2,000 秒
S3.5 2026-07-29 19:47:06 ~ 20:20:26 2,000 秒
S6 2026-07-29 20:24:47 ~ 20:58:07 2,000 秒

以上时间均为 UTC+8。

7.1 EMS Builder 五服务合计(4 核等效)

Section titled “7.1 EMS Builder 五服务合计(4 核等效)”
状态 场景 平均 P95 P99 峰值
🟢 S1 13.48% 23.97% 41.50% 62.53%
🟢 S2 28.47% 48.33% 56.36% 67.17%
🟢 S2.5 26.11% 38.36% 49.96% 65.76%
🟡 S3 50.58% 72.31% 78.55% 95.43%
🟢 S3.5 43.50% 61.27% 70.93% 86.75%
🔴 S6 65.95% 85.87% 91.61% 208.59%

S6 的 Edge-EMS Builder 峰值 208.59% 是单个采样窗口的异常值,对应五服务合计 CPU 时间超过 4 核常规容量。结合该场景 11 次采样超时判断,可能存在采样窗口跨期或突发调度,不将其视为可持续资源占用。

7.2 整机 CPU(全部 CPU 容量归一化)

Section titled “7.2 整机 CPU(全部 CPU 容量归一化)”
状态 场景 平均 P95 P99 峰值
🟢 S1 20.22% 38.67% 48.57% 67.70%
🟢 S2 35.88% 57.58% 66.41% 82.42%
🟢 S2.5 32.72% 45.28% 57.03% 75.06%
🟡 S3 57.95% 81.06% 89.16% 98.64%
🟢 S3.5 50.16% 71.09% 79.84% 96.98%
🔴 S6 73.86% 94.02% 97.95% 100.00%

整机 CPU 是本报告判断设备 CPU 容量的主要依据。S3.5 的 P95 比 S3 低 9.97 个百分点;S6 的 P95 已超过 90%,不具备足够的持续运行余量。

状态 场景 EMS Builder 归属内存平均 EMS Builder 归属内存 P95 整机实际内存平均 整机实际内存 P95 整机实际内存峰值
🟢 S1 2,666.77 MB 2,704.44 MB 1,550.46 MB(39.74%) 1,637.29 MB(41.97%) 1,694.09 MB(43.42%)
🟢 S2 2,805.86 MB 2,895.39 MB 1,579.23 MB(40.48%) 1,675.40 MB(42.94%) 1,736.57 MB(44.51%)
🟢 S2.5 2,881.41 MB 2,933.45 MB 1,507.67 MB(38.64%) 1,596.94 MB(40.93%) 1,667.61 MB(42.74%)
🟡 S3 3,067.36 MB 3,119.55 MB 1,591.41 MB(40.79%) 1,684.10 MB(43.17%) 1,759.92 MB(45.11%)
🟢 S3.5 3,059.29 MB 3,106.37 MB 1,579.83 MB(40.49%) 1,615.76 MB(41.41%) 1,702.34 MB(43.63%)
🔴 S6 3,071.13 MB 3,123.09 MB 1,636.22 MB(41.94%) 1,721.25 MB(44.12%) 1,791.94 MB(45.93%)

五服务归属内存包含 cgroup 归属的共享页与缓存,不等于物理内存净占用。整机实际内存更能反映设备剩余容量,因此场景判定使用整机实际内存。不同场景的数据库初始状态和缓存热度会影响结果,不应只根据点位数量推断内存变化。

平均处理量以完整 2,000 秒有效区间为分母;达成率依据任务总数除以目标总数计算,避免工作簿显示值四舍五入造成偏差。

状态 场景 Trigger 总数 Trigger 平均 / 目标 Trigger 达成率 MQTT 总数 MQTT 平均 / 目标 MQTT 达成率
🟢 S1 20,000 10.00 / 10 100.00% 10,000 5.00 / 5 100.00%
🟢 S2 79,990 40.00 / 40 99.99% 19,995 10.00 / 10 99.98%
🟢 S2.5 79,990 40.00 / 40 99.99% 20,000 10.00 / 10 100.00%
🟡 S3 179,788 89.89 / 90 99.88% 39,800 19.90 / 20 99.50%
🟢 S3.5 179,943 89.97 / 90 99.97% 39,960 19.98 / 20 99.90%
🔴 S6 298,469 149.23 / 150 99.49% 59,239 29.62 / 30 98.73%

本报告以 99% 作为推荐运行场景的处理量参考线。S6 的 MQTT 低于该参考线,且高 CPU、时延上升与采样超时同时出现,表明该负载已进入压力区。

以下分位数基于有效区间内全部 Trigger 任务记录,单位为毫秒。

状态 场景 平均 P50 P95 P99 单次最大
🟢 S1 47.86 19 32 47 10,160
🟢 S2 23.65 11 30 53 10,938
🟢 S2.5 26.06 17 46 69 10,938
🟡 S3 37.69 14 55 99 10,993
🟢 S3.5 29.88 15 56 88 10,994
🔴 S6 44.06 17 87 162 11,985

常态分位数均较低,但各场景均存在约 10~12 秒的极端单次长尾。长尾不会明显改变 P99,却可能影响个别控制或告警任务,仍需专项排查。

以下分位数基于有效区间内全部 MQTT 任务记录,单位为毫秒。

状态 场景 平均 P50 P95 P99 单次最大
🟢 S1 57.90 57 65 73 122
🟢 S2 57.83 57 67 76 115
🟢 S2.5 57.13 56 65 74 330
🟡 S3 62.31 58 89 146 340
🟢 S3.5 58.60 57 77 98 220
🔴 S6 74.79 64 134 236.62 920
场景 判定 主要依据
S1 通过 基准负载下整机 CPU P95 为 38.67%,内存 P95 为 41.97%,任务处理量达到目标。
S2 通过 Trigger 与 MQTT 达成率均接近 100%,资源保有充足余量;需留意 1 次采样超时。
S2.5 通过 处理量达到目标;变化存储下整机 CPU 平均值和 P95 均明显低于 S2。
S3 有条件通过 处理量和任务时延达标,但整机 CPU P95 为 81.06%,出现 2 次采样超时,持续运行余量偏小。
S3.5 推荐 在 5,000 点/秒负载下,Trigger / MQTT P95 均低于 100 ms,整机 CPU P95 为 71.09%,实际内存 P95 为 41.41%,且无采样超时。
S6 不建议持续运行 MQTT 达成率为 98.73%、P99 为 236.62 ms,整机 CPU P95 为 94.02%,并出现 11 次采样超时。
  • 数据采集配置量:5,000 点/秒;
  • 聚合运算:30 个;
  • 普通 Trigger:50 次/秒;
  • 100 ms Trigger:4 个,即 40 次/秒;
  • Trigger 合计:90 次/秒;
  • MQTT:20 次/秒;
  • 协作任务:10 次/秒;
  • Trigger 任务记录:保存;
  • 数据存储:变化存储,数值不变时最迟 10 秒保存一次。
  • 长期运行建议在上述已测配置基础上保留约 20% 工程余量,并使用实际 Lua 脚本、消息体大小和数据库历史量进行上线前复测。
  • 建议对整机 CPU 设置 80% 预警,对整机内存设置 70% 预警、80% 严重告警,并持续观察 PostgreSQL 缓存和数据库增长。
  • 需要实时存储时可参考 S3 的结果,但该场景整机 CPU P95 已超过 80%;若不是业务强制要求,优先采用 S3.5 的变化存储策略。
  • S6 仅用于短时压力、限流或过载保护验证,不建议作为 E630 的持续生产负载。
  1. S2 出现 1 次采样超时,S3 出现 2 次,S6 出现 11 次;S1、S2.5 和 S3.5 未发现采样超时。
  2. 完整执行 72 小时稳定性测试,记录进程重启、OOM、错误日志、内存斜率和数据库增长。
  3. 为采集点、Trigger、MQTT、协作任务分别增加成功、失败、超时和丢弃计数。
  4. 补充磁盘吞吐、I/O wait、PostgreSQL WAL / checkpoint、连接池和队列深度。
  5. 对 Trigger 的 10~12 秒单次长尾关联任务 ID、Lua 脚本、SQL、GC、I/O 和系统日志。
  6. 记录每个场景开始前的数据库大小、PostgreSQL 配置和缓存热度,增强跨场景内存结果的可比性。
  • 点位数是测试配置量,不是逐点成功计数;现有数据无法独立证明每个采集点均成功写入。
  • 工作簿没有业务错误率、任务结果状态和正确率字段,处理量达标不等于业务正确率为 100%。
  • 本轮各场景均为约 33 分 20 秒的短时测试,适合比较性能,不替代长期稳定性测试。
  • S3.5 是当前批次综合指标最优的已测配置;20% 工程余量是容量规划建议,不是独立实测结论。

其他型号请参阅:AFE-E620 测试报告。