docs(test): record v5 pressure and priority results

This commit is contained in:
hectorzhao
2026-08-20 16:26:44 +08:00
parent 14f993c1f8
commit 26ef67fb6a
2 changed files with 14 additions and 0 deletions
+12
View File
@@ -3770,3 +3770,15 @@ git diff --check
- 只读测试环境PostgreSQL `EXPLAIN (ANALYZE, BUFFERS)`确认应用查询使用`SmsApplication_cmppAccount_key`,执行约0.046ms;默认规则聚合检查使用`RiskRule_applicationId_code_key`并命中5行,执行约0.047ms。现有索引已经匹配查询,因此本轮不增加猜测性索引或migration;测试环境未安装`pg_stat_statements`,没有为诊断修改数据库扩展或配置。
- 本地API TypeScript正式编译通过;API全量42套487项全部通过,其中`RiskReviewService``SendChainService`专项覆盖默认规则并发单飞/短缓存/失败重试/缺失恢复、单Submit只查一次应用、已知消息直接入队且不回查任务/消息,以及既有多号码、模板、频控、计费、补发和回执回归。5份Gateway队列契约、R0、R6、R7、R10和`git diff --check`通过;R9门禁在本轮已更新的`enqueueBatchTask`哈希通过后,被HEAD既有且本轮未修改的`dispatchDueScheduledTasks`哈希漂移阻断(契约期望`8fd154...`、当前方法`37db96...`),未为通过本需求门禁而改写或归因该并行历史。Jest使用`--forceExit`收尾仓库既有异步句柄;首次从仓库根目录误启动时扫描受保护`outputs/`并使用错误转换配置,未修改或删除其中任何文件,随后在`api`目录按项目配置重跑通过。
- 当前尚未部署虚拟机测试环境或执行V5阶梯压测;`TC-CMPP-PERF-V5-005`需在取得明确发布授权、建立PostgreSQL/运行源码/环境恢复资产后执行。没有发送、补发或重投真实短信,没有修改通道账号、密码、启停状态、企业余额或客户连接;`api/tsconfig.build.tsbuildinfo``tsconfig.tsbuildinfo``outputs/``pnpm-lock.yaml`和空文件`=`继续保护、不归因。
# 2026-08-20 CMPP压测优化V5:测试环境发布、阶梯复测与优先队列验收
- V5代码提交为`14f993c1f8e4ef5075a16c64ee8e46987054e21e`,未推送。仅发布到`100.93.204.60`虚拟机测试环境,运行标识为`14f993c1f8e4ef5075a16c64ee8e46987054e21e+workspace.v5.e38b3598c8de`;预生产`8.160.169.106`只读标识复核仍为`433b2ee56f6016ad8afff1bac73f510b8fd53083+gateway-v2.cd7bb8d05e7b`,未发布、未回退、未压测。
- 发布前恢复目录为`/opt/cmpp-platform-backups/v5-20260820T073310Z`,包含PostgreSQL自定义格式备份、运行源码、环境/systemd配置和原运行目录Git元数据。`pg_restore --list`、tar可读性和`SHA256SUMS`均通过;数据库、源码、环境资产SHA-256分别为`1d72b72b8702b66494f6c63384ba11fb7414982aac3b3dba4f2bbcf32691c6d5``cfa4679ffeef64d0a5d13b198bac272b53b9b01a4887371503d76591cca8d44e``f8aa632d622556d709d1ddaba0610e5eeeb604075ad92b8f81aa945b16c6f251`。V5运行包`outputs/cmpp-v5-runtime-20260820-153020.tar.gz`为2407264字节,本地与测试机SHA-256均为`e38b3598c8debc00d32c336831d172b492119199a7d8c843dfb774c16711fd22`
- 标准发布完成依赖、安全/发布门禁、Prisma生成与迁移、前端/API/Gateway/安全代理构建、Nginx校验、重启和健康检查;91条migration无待应用项。API、Gateway、安全代理、MinIO、PostgreSQL、Redis、Nginx、Prometheus最终均active,隔离供应商连接6/6,命令与结果Stream最终均`pending=0/lag=0`。首次构建因部署目录旧Git元数据不能完成Go VCS stamping而在服务重启前停止;该元数据移入恢复目录并校验后,以`GOFLAGS=-buildvcs=false`按同一标准脚本重新发布成功,没有删除恢复资产。
- 原压测脚本重复使用历史`1380000xxxx`号码池,首轮10条/秒有8条被真实24小时号码频控拒绝,因此该轮明确作废、未计入V5容量。没有清除或篡改Redis/PostgreSQL频控状态;测试脚本增加可配置手机号前缀,正式五档分别使用尚无频控记录的`1390000/1370000/1360000/1350000/1340000`号码池,全部经真实API、PostgreSQL、Redis、Gateway和隔离供应商链路,且数据库均识别为mobile。
- V5正式阶梯结果:10条/秒599/599受理,P50/P95/P99=`30/105/1736ms`20条/秒1199/1199`552/735/808ms`30条/秒1799/1799`685/890/1464ms`40条/秒2399/2399`1016/1748/3111ms`。四档均为0拒绝、0连接错误,双Stream均在下一档前排空;相对V410/20/30/40条/秒P95由`146/1129/1626/2330ms`降至`105/735/890/1748ms`40条/秒继续为安全档。
- 50条/秒生成2999条,但只收到2991个SubmitResp,缺8个响应,因此按零丢响应停止线判定失败;已收到响应P50/P95/P99=`2586/2896/3895ms`,0显式拒绝、0连接错误。结束时命令Stream为`pending=64/lag=1407`,约75秒后排空;结果Outbox随后也恢复0/0,所有服务保持active且API/Gateway错误日志筛查为空。该档属于可恢复过载,不作为安全容量;当前结论仍为40条/秒健康、50条/秒不健康。
- Prometheus按各60秒窗口附近75秒区间计算的API阶段平均值显示,10/20/30/40/50档`application_lookup`约为`1.42/51.04/65.54/108.64/247.65ms``risk_frequency``4.34/115.10/143.61/229.05/519.32ms``queue_publish``4.71/70.79/101.17/163.46/383.60ms``complete_submit``18.99/479.58/610.03/992.49/2285.77ms`。V5减少固定数据库往返后40条/秒P95继续下降,但50条/秒时同步风控、入队和持久化仍随数据库并发竞争放大,下一阶段应针对这些阶段继续做查询合并/事务缩短,而不是把50条/秒宣称为安全容量。
- 优先队列在真实积压下通过验收。BullMQ配置为priority=1、normal=10030条/秒时优先任务`queuedAt`至首条`SmsSubmitRecord.createdAt`的P50/P95=`0.786/0.988s`,普通任务为`14.678/26.282s`40条/秒分别为`2.996/3.916s``45.017/58.536s`。低负载10/20条/秒两类接近,符合无积压时无需插队的预期;高负载差异证明优先任务能够越过普通积压持续取得发送Worker。SubmitResp按优先/普通拆分在40条/秒P95为`1727/1741ms`,说明上游受理没有饿死普通连接。50条/秒优先任务也优于普通任务,但两类均出现几十秒下游等待,不能用优先级掩盖总容量过载。
- 本轮优先级结论只覆盖3个priority应用与7个normal应用混合、移动号段和现有六个隔离供应商账号;联通、电信号段及六通道跨运营商容量/优先级隔离仍未完成,不外推为全运营商结论。完整报告和原始`events.jsonl/summary.json`保存在短信平台测试项目。没有发送真实短信,没有修改通道账号、密码、启停状态、企业余额或客户连接;受保护的`api/tsconfig.build.tsbuildinfo``tsconfig.tsbuildinfo``outputs/``pnpm-lock.yaml`和空文件`=`继续排除提交、不删除、不归因。