Files

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。

准备端

任选其一:

  1. 管理接口批量开通:-admin-pass 或 -admin-token。工具用 POST /api/admin/endpoints/import 一次最多 1000 行。
  2. 自助注册:管理员已开启注册时传 -register-code。
  3. 复用已开通的端:-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 节即可。