perf(cmpp): reserve transport for inbound submit
This commit is contained in:
@@ -3798,3 +3798,6 @@ git diff --check
|
||||
- 首轮50条/秒30秒测试写入1499条Inbox,但Worker因把`YYYY-MM-DD`字符串传给Prisma DateTime以及Asia/Shanghai会话中用`NOW()`比较UTC无时区租约而反复重领。发现后立即停止Worker,未清理Inbox、未重投客户提交。修复提交`53073461e9b991978a3063a691d454b68c20ced9`改为合法UTC Date对象并在领取/退避SQL显式使用`NOW() AT TIME ZONE 'UTC'`;修复前第二套恢复资产位于`/opt/cmpp-platform-backups/p1fix-20260820T175000-before-utc-fix`且全部校验通过。重启后原1499条Inbox无需客户重发即全部完成,日限/频控预留和短信主记录均1499条,双Stream最终0/0。
|
||||
- UTC修复后的第二轮50条/秒生成1499帧,收到1492个SubmitResp,其中1483成功、9拒绝、7缺响应,P50/P95/P99=`519/3385/3909ms`,按零拒绝/零丢响应停止线仍失败。数据库时间窗内1487条新Inbox最终全部completed。Gateway累计阶段证明1489次API往返成功、10次恰好10秒超时;API自身1493个`POST /api/gateway/events/inbound/submit`全部在1秒内完成,说明未归因尾延迟位于Gateway到本机API的HTTP传输,而不是SubmitResp写Socket。
|
||||
- 根因补充为Go默认Transport每主机只保留2条空闲连接,无法匹配64槽入站窗口;同时PrismaPg API/Worker仍使用默认连接池上限,无法为入口和重业务事务建立容量隔离。最小补丁新增Gateway专用API Transport,最大/空闲连接数均受`GATEWAY_CMPP_INBOUND_MAX_CONCURRENCY`约束并保留10秒总超时;Prisma按角色显式使用`API_DB_POOL_MAX=32`和`API_WORKER_DB_POOL_MAX=8`。该补丁不改变最小校验、Inbox幂等、风控、计费、路由或状态机,待提交、建立新恢复资产、部署并从50条/秒重新阶梯验证。
|
||||
- 容量补丁`6708f1f7c540401d1c92083407c3750693bcbb4b`发布前恢复资产位于`/opt/cmpp-platform-backups/p1pool-20260820T101000-before-capacity-isolation`,PostgreSQL 55MB、运行源码187MB、环境/systemd和发布包均经`pg_restore --list`、tar读取及SHA-256校验。测试环境配置API/Worker池32/8,部署后服务、9464/9465回环指标和数据库连接正常。
|
||||
- 补丁后50条/秒30秒生成1499帧,1499/1499成功、零拒绝、零连接错误,P50/P95/P99=`1391/3460/4205ms`,1499条Inbox全部completed,双Stream在注入结束约62秒后归零,入口停止线通过。100条/秒档只生成2719帧(实际90.6条/秒),虽2719/2719成功且P95=4277ms,但客户端窗口被压满1346次,未达到100条/秒目标并停止升档;此时API受理2719个请求全部小于250ms,而Gateway API往返平均3.305秒。
|
||||
- 100档同时存在大量供应商Submit、回执和通讯日志;`inbound.Server`此前让Submit、协议日志、回执恢复和连接事件共享同一64连接Transport,后台流量仍能占满Submit传输槽。第二个最小补丁将Submit池按入站窗口独立,后台池固定16连接;保留10秒超时和全部日志/回执功能,不靠删除遥测通过压测。该补丁待专项验证、提交和再次建立恢复资产后发布复测。
|
||||
|
||||
Reference in New Issue
Block a user