From 07eb0b05ef1d559b88765a729e2863523a20f702 Mon Sep 17 00:00:00 2001 From: richjohnrambo Date: Sun, 27 Sep 2026 01:50:07 +0800 Subject: [PATCH] docs: record allrich pressure test run --- .../IM-allrich双机压测执行记录-20260927.md | 80 +++++++++++++++++++ loadtest/im-pressure/MACHINE-B.md | 28 +++++++ loadtest/im-pressure/README.md | 2 +- 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 docs/test/IM-allrich双机压测执行记录-20260927.md diff --git a/docs/test/IM-allrich双机压测执行记录-20260927.md b/docs/test/IM-allrich双机压测执行记录-20260927.md new file mode 100644 index 0000000..14dba0d --- /dev/null +++ b/docs/test/IM-allrich双机压测执行记录-20260927.md @@ -0,0 +1,80 @@ +# IM allrich 双机压测执行记录 + +日期:2026-09-27 + +## 1. 测试环境 + +| 项目 | 值 | +|---|---| +| 企业码 | `allrich` | +| 企业名称 | 大家一起发 | +| HTTP API | `https://api.118im.com` | +| WebSocket | `wss://api.118im.com/v0/channels` | +| API Key | 通过 `IM_API_KEY` 注入,不写入 Git | +| 测试验证码 | `123456`,仅测试环境使用 | +| 测试密码 | 通过 `IM_LOAD_PASSWORD` 注入,不写入 Git | +| 机器 A | 当前开发机,`192.168.1.135` | +| 机器 B | 另一台压测机,运行 `-machine b` | + +`config.json`、`.env.test`、`manifest.json` 均被 Git 忽略。manifest 含 2000 个账号 Token,只能通过受控内网传输。 + +## 2. 数据准备结果 + +2026-09-27 已完成并通过硬校验: + +- 账号:2000,机器 A/B 各 1000。 +- 用户名:`lta0001-lta1000`、`ltb0001-ltb1000`。 +- 测试手机号:A 使用配置前缀加 `0001-1000`,B 使用配置前缀加 `5001-6000`。 +- 好友关系:1000 对,序号相同的 A/B 用户互为好友。 +- P2P Topic:1000 个,全部写入 manifest。 +- 测试群:1 个,成员数 2000,Topic 仅在 manifest 中保存,文档只记录哈希 `98372d54fe65`。 + +准备过程观察到注册和好友同意接口存在少量瞬时 500/404,100 人群邀请批次存在 502、超过 2 分钟及 `IDEMPOTENCY_IN_PROGRESS`。工具使用相同业务幂等键和退避重试后全部恢复;这些属于准备链路现象,不计入正式消息到达率。 + +## 3. 当前运行状态 + +| 项目 | 值 | +|---|---| +| Run ID | `p2p-20260927-01` | +| 场景 | `p2p` | +| Coordinator | `http://192.168.1.135:8090` | +| 机器 A agent | `1000/1000 READY`,意外断连 0 | +| 机器 B agent | 等待启动 | +| 远端 dev | `6d17154` 或更新版本 | + +机器 A 的 coordinator 和 agent A 已运行。机器 B 启动并达到 1000 READY 后,coordinator 自动下发统一开始时间,无需人工再次触发。 + +## 4. 机器 B 运行文件 + +机器 A 已生成: + +```text +/tmp/allrich-machine-b-runtime-p2p-20260927-01.tar.gz +SHA-256: ed22883856862e0ef8183cf14c4306d4569904400867cb2a236c3498e5c6f574 +``` + +机器 B 必须先安全获取该文件,再执行: + +```bash +git switch dev +git pull --ff-only origin dev +cd loadtest/im-pressure +tar -xzf /安全传输路径/allrich-machine-b-runtime-p2p-20260927-01.tar.gz +chmod 600 .env.test manifest.json +set -a; source .env.test; set +a +go build -o im-pressure . + +./im-pressure agent \ + -config config.json \ + -manifest manifest.json \ + -machine b \ + -coordinator http://192.168.1.135:8090 \ + -metrics-listen :9105 \ + -output results/p2p-20260927-01/agent-b-summary.json +``` + +完整 B 机操作和故障处理见 [`loadtest/im-pressure/MACHINE-B.md`](../../loadtest/im-pressure/MACHINE-B.md)。 + +## 5. 多 Pod 口径说明 + +当前 A/B 配置均使用 `wss://api.118im.com/v0/channels` 公共入口。该配置验证 LB 实际分配下的多 Pod 能力,但不能保证两台压测机固定落到不同 Pod。若验收要求强制指定不同 Pod,需要提供两个独立 WS 定向入口,分别配置到 `endpoints.a` 和 `endpoints.b`。 diff --git a/loadtest/im-pressure/MACHINE-B.md b/loadtest/im-pressure/MACHINE-B.md index de90af0..a2c300e 100644 --- a/loadtest/im-pressure/MACHINE-B.md +++ b/loadtest/im-pressure/MACHINE-B.md @@ -6,6 +6,34 @@ 机器 B 固定模拟 `ltb0001` 至 `ltb1000` 共 1000 个用户。测试场景和统一开始时间由机器 A 的 coordinator 下发。 +## 当前 allrich 测试批次 + +以下参数适用于 2026-09-27 正在执行的第一轮单聊压测: + +| 参数 | 值 | +|---|---| +| Git 分支 | `dev` | +| 最低提交 | `6d17154` | +| 企业码 | `allrich` | +| HTTP | `https://api.118im.com` | +| WebSocket | `wss://api.118im.com/v0/channels` | +| 机器 A 内网地址 | `192.168.1.135` | +| Coordinator | `http://192.168.1.135:8090` | +| Run ID | `p2p-20260927-01` | +| 场景 | `p2p` | +| 机器 A 状态 | `1000/1000 READY`,等待机器 B | + +机器 A 已生成安全运行包: + +```text +/tmp/allrich-machine-b-runtime-p2p-20260927-01.tar.gz +SHA-256: ed22883856862e0ef8183cf14c4306d4569904400867cb2a236c3498e5c6f574 +``` + +运行包内只有三个运行时文件:`.env.test`、`config.json`、`manifest.json`。其中包含 API Key、测试账号密码、固定测试验证码和账号 Token,不进入 Git,必须通过受控内网传输。测试环境验证码为 `123456`,正式环境禁止使用固定验证码。 + +本轮 A/B 都通过同一个公共 WebSocket LB 接入。它能覆盖负载均衡后的多 Pod 投递,但不能保证 A、B 被固定分配到不同 Pod;需要强制跨指定 Pod 时,应另行提供两个定向 WS 入口并更新 `config.json`。 + ## 运行前向机器 A 获取 开始前必须拿到以下信息: diff --git a/loadtest/im-pressure/README.md b/loadtest/im-pressure/README.md index a6a241b..6d33781 100644 --- a/loadtest/im-pressure/README.md +++ b/loadtest/im-pressure/README.md @@ -1,6 +1,6 @@ # IM 双机压力测试工具 -该工具按商户 `006` 的固定模型运行:两台压测机各承载 1000 个 WebSocket 用户,共 2000 个用户、1000 对好友和一个 2000 人群。 +该工具按配置指定的企业租户运行:两台压测机各承载 1000 个 WebSocket 用户,共 2000 个用户、1000 对好友和一个 2000 人群。当前测试环境使用 `allrich`,本轮实时参数见 [MACHINE-B.md](./MACHINE-B.md) 和 [allrich 双机压测执行记录](../../docs/test/IM-allrich双机压测执行记录-20260927.md)。 机器 B 上的 AI 或操作人请直接阅读 [MACHINE-B.md](./MACHINE-B.md)。该文件不重复讲方案,只给出机器 B 从核验到启动、观察和回传结果的完整命令。