压力测试报告
场景
- 模拟 200 设备 × 5000 点位
- 采用批量读取与快照返回
结果摘要
- 单包 5000 点位读取(Mock)耗时:≤ 200 ms(见
TestScheduler_Stress_5000Points)
- API 快照返回:常量级(微秒级)
2026 Q3 SLA 三列对比(Phase B-11)
| 场景 |
lag P95 |
内存 drift |
故障隔离 |
说明 |
| Mock 10k(Q3 benchmark) |
~7 ms |
~4% |
N/A |
q3_10k_tag_benchmark_test.go |
| Modbus 仿真器 |
<50 ms |
— |
6/7 串行 |
modbus_protocol_test.go |
| ARMv7 |
待板端 |
<8% 目标 |
— |
scripts/bench_armv7.sh 交叉编译就绪 |
结论
- 满足“单网段 1000 点位并发读取延迟 ≤ 300 ms”的目标(在真实设备条件下需视网络与设备能力调优)
2026-07-05 回归压测(ScanEngine v5.2 补丁后)
对照 南向采集通道回归验证测试方案 §五 与 ScanEngine重构测试报告 §2.4。
执行命令
make bench-g007 # G007 调度吞吐
make bench-q3 # Q3 10k tag deadline
make test-soak-short # SLA 短 soak(30s,五 gate)
CGO_ENABLED=0 go test ./internal/core/... -short -count=1
日志:_run_logs/2026-07-05_regression_bench_*.txt
结果
| 场景 |
指标 |
目标 |
实测 |
结果 |
| G007 1000 设备 · 1s · mock |
调度吞吐 |
≥950 设备/s |
976 设备/s |
✅ PASS |
| |
任务成功率 |
100% |
29287/29287,failed=0 |
✅ |
| |
scan_miss_deadline |
0 |
0 |
✅ |
| |
lag P95 |
— |
0.57 ms |
— |
| Q3 100×100 tag · 1s |
吞吐 |
— |
9663 pts/s |
✅ PASS |
| |
lag P95 |
<100 ms |
1.08 ms |
✅ |
| |
miss_deadline |
0 |
0 |
✅ |
| Short Soak 30s |
Release Gate |
五 gate 全绿 |
PASS |
✅ |
core -short |
功能/压测用例 |
全绿 |
PASS (~45s) |
✅ |
未执行项
| 项 |
原因 |
| F 组 12h / 72h soak |
运维级长跑,需 SOAK_DURATION=12h 或 nightly 流水线 |
| Modbus 仿真器 6/7 串行压测(联机) |
无本地 Modbus 模拟器集群 |
| ARMv7 板端 bench |
待 scripts/bench_armv7.sh 板端执行 |
2026-07-05 结论:代码层压力与 SLA gate 全部 PASS;G007 较 2026-07-04(947/s WARN)提升至 976/s 达标。
2026-07-12 Mac 全面复测(ScanEngine / 万 Tag / 压力)
在 macOS 开发机上按仓库既有 Makefile / go test 路径复测「万 Tag」与 ScanEngine 引发的性能/压力场景;原始日志见 _run_logs/2026-07-12_mac_*。
环境
| 项 |
值 |
| OS |
macOS 12.7.6(darwin 21.6.0,x86_64) |
| CPU |
Intel Core i5 @ 2.7 GHz · 4 核 |
| 内存 |
8 GB |
| Go |
1.26.4 darwin/amd64 |
| 仓库 commit |
8daa1224 |
CGO_ENABLED |
0 |
执行命令
# 万 Tag(Q3,含 -v 指标)
CGO_ENABLED=0 go test ./internal/core/ -run TestQ3_TenThousandTagBenchmark -count=1 -timeout=15m -v
# G007 调度吞吐
make bench-g007 # 或 go test … -run TestG007_DeviceThroughputBenchmark -v
# Soak 短门控
make test-soak-short
# ScanEngine / 边缘计算压力(含短窗 10k tag)
CGO_ENABLED=0 go test ./internal/core/ \
-run 'TestScanEngine_Stress|TestScanEngine_TenThousand|TestEdgeComputeStress' \
-count=1 -timeout=10m -v
结果
| 场景 |
指标 |
目标 |
实测 |
结果 |
| Q3 万 Tag 100×100 · 1s · 60s |
lag P95 |
<100 ms |
1.56 ms |
✅ PASS |
| |
miss_deadline |
0 |
0 |
✅ |
| |
heap drift |
<5% |
0.00% |
✅ |
| |
吞吐 |
— |
9823 pts/s |
✅ |
| |
成功率 |
100% |
5894/5894,failed=0 |
✅ |
| |
GC pause max |
<20 ms |
0.10 ms |
✅ |
| G007 1000 设备 · 1s · 30s |
调度吞吐 |
≥950 设备/s |
986 设备/s |
✅ PASS |
| |
miss_deadline |
0 |
0 |
✅ |
| |
lag P95 |
— |
0.72 ms |
— |
| |
成功率 |
100% |
29580/29580 |
✅ |
| Short Soak 30s |
集成门控 |
PASS |
ok ~78s |
✅ |
| ScanEngine Stress |
活动任务 ≤ limit |
— |
PASS |
✅ |
10k 短窗(TestScanEngine_TenThousandTagsBenchmark,3s 测量) |
lag P95 / miss |
<100ms / 0 |
1.13 ms / 0 |
✅ |
| |
吞吐 |
— |
10267 pts/s |
— |
| EdgeCompute 高频合并 |
executed / coalesced |
— |
1 / 999 |
✅ |
| EdgeCompute 100 规则 burst |
executed / dropped |
— |
100 / 0 |
✅ |
| EdgeCompute 延迟 |
p50 / p99 |
<100ms |
0 / 0 ms |
✅ |
| EdgeCompute 队列丢弃 |
drops = failures |
— |
8 / 8 |
✅ |
相对 2026-07-05
| 场景 |
2026-07-05 |
2026-07-12 Mac |
| G007 吞吐 |
976 设备/s |
986 设备/s |
| Q3 lag P95 |
1.08 ms |
1.56 ms |
| Q3 吞吐 |
9663 pts/s |
9823 pts/s |
| Q3 miss |
0 |
0 |
2026-07-12 结论:Mac 上万 Tag 与 ScanEngine 相关性能/压力用例 全部 PASS;G007 持续高于 950 设备/s 门禁。万 Tag 明细见 Q3 万 Tag 压测报告 §5。
未执行项(与既有基线一致)
| 项 |
原因 |
Q3_BENCH_DURATION=7200 2h 长跑 |
可选加班验收,本次为 CI 等价 60s 窗口 |
| Modbus 仿真器 / ARMv7 板端 |
无本机仿真器集群 / 无板端 |
| 72h Soak |
运维级长跑,需 nightly |
单元测试覆盖率门禁(2026-07-05)
| 项 |
阈值 |
基线 |
实测 |
结果 |
internal/core 语句覆盖率 |
≥ 80% |
60.3% |
80.5% |
✅ 达标 |
internal/core + internal/driver 汇总 |
≥ 80% |
57.7% |
71.7% |
⚠️ 未达 |
| 测试命令 |
— |
CGO_ENABLED=0 go test ./internal/core/... ./internal/driver/... -short -count=1 -coverprofile=coverage.out |
— |
— |
core -short 功能回归 |
全绿 |
— |
PASS(~47s) |
✅ |
driver -short |
全绿 |
— |
PASS(~3min) |
✅ |
make test-soak-short |
五 gate 全绿 |
— |
PASS(~78s) |
✅ |
说明:core ≥80% 门禁通过;合并 scope 受南向 driver 真实 TCP/会话路径制约仍为 71.7%。分包明细见 ScanEngine重构测试报告 §十一 与 南向驱动测试报告 §八。