docs(cmpp): record V3 test pressure results
This commit is contained in:
@@ -3733,3 +3733,17 @@ git diff --check
|
|||||||
- 当前只修改本地代码,没有连接或改变预生产运行版本;预生产只读标识仍为`433b2ee56f6016ad8afff1bac73f510b8fd53083+gateway-v2.cd7bb8d05e7b`。V3只允许发布到`100.93.204.60`虚拟机测试环境。
|
- 当前只修改本地代码,没有连接或改变预生产运行版本;预生产只读标识仍为`433b2ee56f6016ad8afff1bac73f510b8fd53083+gateway-v2.cd7bb8d05e7b`。V3只允许发布到`100.93.204.60`虚拟机测试环境。
|
||||||
- V3首次测试环境发布后10条/秒为599/599成功、P50/P95/P99=36/78/206ms;20条/秒为1199/1199成功,但P50/P95/P99=1143/5294/7107ms,仍触发5秒停止线,因此没有继续30/40/50。Prometheus同时显示认证阶段10个连接合计窗口320,但压测期入站in_flight始终为0;代码复核发现首次消息完成后`rememberDownstream`用消息级快照覆盖`byConn`时没有继承连接的`windowSize/submitInFlight`,使后续请求退回串行。该次20条/秒结果不作为修复后V3容量结论。
|
- V3首次测试环境发布后10条/秒为599/599成功、P50/P95/P99=36/78/206ms;20条/秒为1199/1199成功,但P50/P95/P99=1143/5294/7107ms,仍触发5秒停止线,因此没有继续30/40/50。Prometheus同时显示认证阶段10个连接合计窗口320,但压测期入站in_flight始终为0;代码复核发现首次消息完成后`rememberDownstream`用消息级快照覆盖`byConn`时没有继承连接的`windowSize/submitInFlight`,使后续请求退回串行。该次20条/秒结果不作为修复后V3容量结论。
|
||||||
- 最小修复让消息级快照共享原连接窗口和原子在途计数器,并增加“消息注册后窗口32及聚合槽位仍保持”的回归断言;需重新完成Gateway/API回归、R6契约、提交、测试环境发布与10/20阶梯复测后再判断V3效果。
|
- 最小修复让消息级快照共享原连接窗口和原子在途计数器,并增加“消息注册后窗口32及聚合槽位仍保持”的回归断言;需重新完成Gateway/API回归、R6契约、提交、测试环境发布与10/20阶梯复测后再判断V3效果。
|
||||||
|
|
||||||
|
# 2026-08-20 CMPP压测优化V3:修复后测试环境发布与阶梯复测
|
||||||
|
|
||||||
|
- V3主实现提交为`0757a69`,消息注册后连接窗口继承修复提交为`e9c7333`;均只保存在本地`main`,未推送。最终发布目标仅为`100.93.204.60`虚拟机测试环境,运行标识为`e9c73333b37746dd8a5f35628e4fe8fdfe02237c+workspace.v3fix.467865d78510`。预生产`8.160.169.106`未发布、未回退、未压测。
|
||||||
|
- 发布前分别建立`/opt/cmpp-platform-backups/releases/20260820-114900-before-v3-inbound-test`和`/opt/cmpp-platform-backups/releases/20260820-121100-before-v3-window-fix-test`两套恢复资产,均包含PostgreSQL自定义格式备份、运行源码和平台环境配置;`SHA256SUMS`、`pg_restore --list`和tar可读性校验通过。最终修复包`outputs/cmpp-v3-inbound-fix-20260820-121000.tar.gz`共900项,SHA-256=`467865d785109f47869f6ea44e2c1f9b09c6368a812bc859ae56989caf086899`,排除了`.env`、依赖、`outputs`、`*.tsbuildinfo`、`pnpm-lock.yaml`和空文件`=`。
|
||||||
|
- 标准发布流程完成依赖安装、安全/发布门禁、Prisma检查、前端/API/Gateway构建、Nginx校验和服务重启;90条migration无待应用项。API、Gateway、Nginx、PostgreSQL、Redis、MinIO和监控服务最终均active,测试供应商连接6/6,Stream消费者1且最终`pending=0/lag=0`,本轮没有Gateway Submit死信。
|
||||||
|
- 修复后阶梯结果:10条/秒实际599条,599/599受理,P50/P95/P99=`38/66/197ms`;20条/秒实际1199条,1199/1199受理,`942/1427/1641ms`;30条/秒实际1799条,1799/1799受理,`1266/2033/2085ms`;40条/秒实际2399条,2397条SubmitResp成功、2条返回result=9,`2637/3912/5201ms`。两次失败均为优先应用sequence=6等待API响应头满10秒后超时;因此40条/秒不满足零拒绝停止线,没有继续50条/秒。
|
||||||
|
- V3获得直接正向证据:20条/秒P95由V2的5580ms降至1427ms,压测期入站并发最大21;30条/秒仍无拒绝、无连接错误,入站并发最大55。当前可确认安全档位由10条/秒提升到30条/秒,拐点位于30至40条/秒。40条/秒时入站并发最大150,说明连接内窗口确实生效,不再退回串行。
|
||||||
|
- 新瓶颈转移到供应商工作池及同步回写链路:20/30/40条/秒时64个Worker槽均打满,Stream lag峰值分别约48/642/1212,测试后均排空。全窗口供应商尝试6569次,其中成功6331、失败238;成功供应商RTT平均约1040ms,成功连接等待平均约519ms,成功API回调单次平均约337ms。40条/秒最终触发两个上游API 10秒超时,V4应优先把供应商结果改为幂等Outbox/异步回调,释放Worker槽位,并保留可恢复重试和逐条ACK语义。
|
||||||
|
- 5996条业务消息均由API返回201并真实持久化,与四档客户端业务数完全一致;40条/秒的两次Gateway超时发生在API完成持久化之后,不能重投。最终状态为delivered 5768、failed 57、submitted 171,优先/普通分别为1861/4135条,全部仍识别为mobile;`GatewaySubmitDeadLetter`新增0。测试客户端有限回执收集窗口不替代数据库最终状态。
|
||||||
|
- API全窗口平均`total≈1647.72ms`、`complete_submit≈1550.89ms`、`risk_frequency≈677.38ms`、`queue_publish≈242.43ms`、两次`application_lookup`合计约191.44ms、`template_match≈189.90ms`;并发消除了连接串行放大,但这些同步阶段随负载明显增长。主机CPU峰值约55.56%、内存使用峰值约32.55%,不是CPU或内存饱和。
|
||||||
|
- 优先级隔离仍未通过:40条/秒priority P95约3912ms、normal P95约3911ms,且两次SubmitResp拒绝都发生在priority连接;全部5996条均为mobile,联通/电信及六通道容量仍待号段识别修复后测试。原始目录名继续沿用既有`lg-v2-*`脚本标签,但被测运行标识和代码均为V3修复版,正式结论以运行标识为准。
|
||||||
|
- V3回归已通过Gateway全量`go test ./... -count=1`、`go vet ./...`、项目内gocmpp测试/vet、API TypeScript正式编译、真实隔离Redis上的SendChain 113/113、4份Stream契约、R6 102声明/14项关键测试、R7、SendChain R10及`git diff --check`。Linux测试机补跑`-race`时因网络无法下载仅供测试的`miniredis`和`golang.org/x/text`依赖而阻塞,未伪报通过,也未伪造外部依赖。
|
||||||
|
- 本轮只使用隔离供应商模拟器,没有发送、补发或重投真实短信,没有修改通道账号、密码、启停状态、企业余额或客户连接。`api/tsconfig.build.tsbuildinfo`、`tsconfig.tsbuildinfo`、`outputs/`、`pnpm-lock.yaml`和空文件`=`继续作为受保护项排除提交。
|
||||||
|
|||||||
Reference in New Issue
Block a user