docs: record allrich pressure test run

This commit is contained in:
richjohnrambo
2026-09-27 01:50:24 +08:00
parent 6d17154a72
commit 07eb0b05ef
3 changed files with 109 additions and 1 deletions
@@ -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`。
+28
View File
@@ -6,6 +6,34 @@
机器 B 固定模拟 `ltb0001` 至 `ltb1000` 共 1000 个用户。测试场景和统一开始时间由机器 A 的 coordinator 下发。 机器 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 获取 ## 运行前向机器 A 获取
开始前必须拿到以下信息: 开始前必须拿到以下信息:
+1 -1
View File
@@ -1,6 +1,6 @@
# IM 双机压力测试工具 # 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 从核验到启动、观察和回传结果的完整命令。 机器 B 上的 AI 或操作人请直接阅读 [MACHINE-B.md](./MACHINE-B.md)。该文件不重复讲方案,只给出机器 B 从核验到启动、观察和回传结果的完整命令。