NEXT-11 探针与账务争用修复
隔离探针连接,缩小目录排他锁范围,并核验真实准入与结算
本项限定验收通过:修复候选完成128并发配置、300秒稳态、424次请求,零错误且逐笔账务一致。2000并发与生产切换仍未验收。
本项承接503原因调查。用户已授权按预期方案修复:独立探针连接池、降低账务争用,再以原失败负载验收。保持128并发配置、120秒合成流、300秒稳态、每Core业务池10/5和1秒探针预算;没有生产修改或付费模型调用。
修复范围
已有批量检查与默认关闭的专用探针池继续使用。测试中显式开启每Core最多1个探针连接,原业务数据库和账务事实源不变。真实Redis/数据库故障、迁移或模型状态失效仍必须拒绝,不复用过期成功结果。
代码审查发现,Models、Admit与Attempt虽只读取目录政策,仍持有全局catalog行的排他锁直到事务提交,令不同账户的这些操作相互等待。本轮只将这三处PostgreSQL目录读锁改为共享读锁;目录/价格/授权修改仍持排他锁,账户、Key、钱包和预算事务保持。SQLite保留原行为。
Usage、TextUsage、Credit等路径中,同一锁还承担跨账户事件/来源幂等保护,本轮不批量替换。两个热点账户自身的串行账务也不会因目录共享读锁消失。
验证安排
Core负责真实PostgreSQL读者并行、写者互斥、价格切换与不可变报价、同账户预算和重放测试,以及探针池的依赖故障负例。独立审查核对锁顺序、写者完整性和账务安全。
Infrastructure只在合成Core TLS代理开启默认关闭的API耗时观测,记录固定路由分类、状态、响应头与处理总耗时。日志异步有界,不包含请求路径ID、凭据或客户内容,不改变转发、重试或超时。它用于检查真正的准入和结算是否仍然排队;只看到就绪成功不足以验收。
远端先运行固定的隔离探针池基线,再运行修复候选;两轮使用同一Edge、代理、镜像与负载参数。核对请求/响应摘要、唯一执行、全部账本、准确扣款、用量归档和预占归零,并记录Core各API耗时与客户端首字节延迟。单轮比较不能承诺固定性能提升比例或生产SLO。
验收结果
基线使用已有批量检查与独立探针池,候选在此基础上增加目录共享读锁。两轮仅Core制品不同,固定同一Edge、代理、controller、fixture、PG/Redis镜像和负载参数;专用池均显式开启,诊断核对两个实例每池实际连接不超过1,业务池仍为10/5、探针预算仍为1秒。
两轮各424次请求成功(384流式、40普通),错误均为0,合计848次。每轮两个合成账户各212次,准确扣款2120/1060 microcredits,预占为0;客户归属、唯一执行、原始响应摘要、全部分页账本与用量归档逐笔一致。活跃流P50/峰值均128,达到目标90%活跃流的稳态样本比例分别95.0%和97.7%;流替换期间有下降,不表述为每一瞬间都维持128条连接。
五类业务接口每轮各有424条完整观测,全部200、正常返回且获得响应头,没有坏JSON或可见日志丢弃,计数与财务审计一致。以下为整轮ramp/steady/drain期间的代理处理耗时,单位毫秒;不包含代理前TLS与网络等待,不是生产SLO。
| 接口 | 基线P95 | 候选P95 | 基线最大值 | 候选最大值 |
|---|---|---|---|---|
| 模型列表 | 342.6 | 273.1 | 670.7 | 546.4 |
| 准入 | 422.9 | 256.6 | 597.9 | 637.4 |
| 发送权 | 387.0 | 278.3 | 565.9 | 509.4 |
| 用量提交 | 404.3 | 224.6 | 617.0 | 496.7 |
| 结算 | 355.3 | 241.8 | 675.3 | 1179.1 |
客户端首字节P95从约2273毫秒到1424毫秒,P99从2710毫秒到1579毫秒。五类业务P95均下降,但准入和结算最大值上升,结算单次最大约1.18秒;因此不能声称所有尾延迟都改善。单次前后运行也不能给出固定性能提升比例。
两轮Edge后台探针均无失败,观测最慢分别约47.4毫秒和37.6毫秒;Core最慢分别约27.1毫秒和28.0毫秒。各日志在运行中顺序复制,记录数与窗口略有不同,不任意把每条事件一一配对。
PG全轮采样分别1771/1843份,有目录锁等待的样本分别36/6份,峰值总锁等待均为19。事务年龄最大值分别约0.336/0.200秒。这说明仍有账务锁竞争;采样次数和窗口不同,不能把样本数比例当作精确性能改善,亦不能把单次长尾全部归给某一把锁。
安全验证与收尾
Core真实PG读并行、写者互斥、价格切换、撤权、同账户并发预算和重放测试通过;全仓race/vet/build、固定源码来源与差分检查通过。独立负例证明目录写锁阻塞时读请求拒绝且不产生预占/发送权副作用,释放后恢复;同一读并行测试在旧版排他锁源码上按预期失败。探针池仍通过占满业务池、占满自身池、Redis中断、DDL阻塞、错误迁移及模型失效等真实依赖负例,保持失败关闭。
基线控制器收尾时发生一次readiness采样文件SCP传输中断,原始结果保留failed;随后从远端完整源补取1737条记录并核对SHA,再独立确认清理完成。原始部分文件、传输恢复和清理恢复证据均保留,未重跑或改写业务结果。候选控制器负载、审计与清理全部通过。
两轮自有服务、容器、凭据和目录均已清理,原有三个业务容器保持运行且启动时间不变;没有生产修改或付费调用。Core源码已修订,专用探针池仍默认关闭,本次隔离运行显式开启,不等于生产已启用。
交付与下一步
不可变源码、制品、检查、负对照、运行配置和独立审查位于 coordination/next11-readiness-repair/;comparison.json固定本轮对照,completion.json记录验收范围。Core候选相对基线只变更两个生产文件,其他为测试与文档,无依赖、迁移或计费规则变化。
本轮完成探针隔离与目录读互斥的限定修复。下一步可以在保留全部业务/账务门禁的前提下安排256/512等分级验证,并继续追踪准入/结算长尾;本轮没有执行扩量。2000并发、真实高带宽输出、多账户分布与生产部署分别验收,同账户预算及全局用量幂等锁保留。
当前调度决定
2026-09-21,用户明确结束本轮验证并进入下一项。本页修复证据保持不变;256/512/2000 扩量从当前队列后置,转入 NEXT-12 媒体任务。这不是目标容量或生产验收通过的声明。