2.6 KiB
2.6 KiB
NixMsg 压测工具(test/load)
本目录提供可执行 PRD 第 8 节指标的压测客户端。不进 CI;go test ./test/load/ 只跑工具自身的最小单测和短时冒烟。
长时间 1000 连接 / 每秒 200 条 / 10 分钟本轮按负责人要求不跑,但工具已能执行。本地验收口径:50 个连接、每秒 20 条、跑 1 分钟能打出报告。
连接规则(DEVELOPMENT 第 5 节)
- MQTT 5;
CleanStart = true;心跳 30 秒。 - ClientID、Username 都等于端编号;Password 为登录密码。
- 只订阅
nix/c/{编号}/down,只向nix/c/{编号}/up发布。 - 订阅完成后发
hello,收到成功resp才算在线,才开始收发。
默认走 WebSocket ws://<http>/mqtt(子协议 mqtt)。也可用 -tcp 走裸 MQTT。
准备端
任选其一:
- 管理接口批量开通:
-admin-pass或-admin-token。工具用POST /api/admin/endpoints/import一次最多 1000 行。 - 自助注册:管理员已开启注册时传
-register-code。 - 复用已开通的端:
-reuse。编号冲突(409 id_taken)视为已存在并继续登录。
端编号为 {prefix}{序号},默认 qb0000 起。登录密码默认 password1234。
场景
-scenario |
行为 |
|---|---|
hold |
只保持 N 条已握手连接(配合 -hold) |
dm |
按 -rate 做单聊 send → 等对方 msg → ack |
group |
建一个 -group-size 人的群,发一条,统计从提交成功到成员都收到 msg 的耗时(推送排队的上界) |
all(默认) |
先 hold(若设置),再单聊,再群发 |
输出:提交与送达的 P50/P95/P99(毫秒)、错误码分布、连接掉线数、群推送排队耗时。
用法
在仓库根目录:
go run ./test/load/cmd/mqttbench -http http://127.0.0.1:<端口> -admin-pass <管理员密码> -n 50 -rate 20 -duration 1m
常用参数:
| 参数 | 默认 | 说明 |
|---|---|---|
-http |
(必填,除非只测裸 TCP 且 -reuse) |
服务 HTTP 根 |
-tcp |
空 | 裸 MQTT host:port |
-n |
50 | 连接数 |
-rate |
20 | 单聊每秒条数 |
-duration |
1m | 单聊时长;0 跳过单聊 |
-group-size |
与 -n 相同 |
0 跳过群发 |
-reuse |
false | 复用已开通编号 |
-register-code |
空 | 自助注册 |
-prefix |
qb | 端编号前缀 |
不要把本命令加进 task check。完整规模(1000 在线、每秒 200、10 分钟、1000 人群发 5 秒)在专用机器上把 -n/-rate/-duration/-group-size 调到 PRD 第 8 节即可。