Commit Graph
17 Commits
Author SHA1 Message Date
wangbo 36546bd5c4 perf(postgres): 回收突发连接并等待验收副作用
失败 Run 的未提交任务已取消,但退款 outbox 尚未完成时下一轮会继承 API 连接高水位和 canceled acquire 增量,污染容量验收。

新增 AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS,生产配置 30 秒回收突发空闲连接;验收中止后等待旧任务、退款、回调和数据库连接全部收敛后才允许新负载启动。

验证:Go 全量测试、gofmt、bash -n、ShellCheck、kubectl kustomize 和 git diff --check 通过。
2026-07-31 03:46:41 +08:00
wangbo 75a56b21bc perf(acceptance): 将 API 连接池提升至 64
P24 千并发在 API Pool 48 下仍出现 acquired 接近上限及 canceled acquire 增长,而 Worker Pool 仅使用 3 条连接,PostgreSQL 实际连接数仍有安全余量。

将生产 API Pool 默认值提升至 64,并允许通过 AI_GATEWAY_ACCEPTANCE_API_DATABASE_MAX_CONNS 配置单次验收;Worker 档位与 min-idle=4 保持不变。

验证:bash -n、ShellCheck、kubectl kustomize 和 git diff --check 通过。
2026-07-31 03:38:28 +08:00
wangbo 2529679b67 perf(postgres): 分离 API 池并降低连接预热
生产同构千并发请求在干净队列上复现 API Pool 31/32、idle=1 且 canceled acquire 持续增长,Worker Pool 仅使用少量连接,确认瓶颈位于 API 数据库连接预算而非 Worker 执行槽。

新增可配置的 AI_GATEWAY_DATABASE_MIN_IDLE_CONNS,生产仅预热 4 条连接;API Pool 独立固定为 48,Worker Pool 继续跟随 P24/P28/P32 的 32/36/40 档位。发布工具、Kubernetes 清单、验收门禁和文档同步更新。

验证:Go 全量测试、gofmt、bash -n、ShellCheck、kubectl kustomize 和 git diff --check 通过。
2026-07-31 03:28:43 +08:00
wangbo 2606cc8223 fix(acceptance): 清理中止验收的未提交任务
验收失败后,排队及尚未提交上游的任务会继续占用队列与 API 数据库连接池,导致下一轮容量测试被历史负载污染。

中止验收时仅取消确认未提交上游的任务,删除其未提交 attempt 与准入记录,释放租约并生成幂等退款事件;提交中或已收到上游响应的任务继续自然收敛。新建验收前也会清理历史失败 Run 的安全遗留任务,并等待其余任务终态。

验证:Go 全量测试通过;临时 PostgreSQL 集成测试覆盖排队、运行未提交、提交中与退款事件;gofmt、bash -n、ShellCheck、git diff --check 通过。
2026-07-31 03:16:38 +08:00
wangbo 1bd9e618ca fix(acceptance): 重试瞬时压力采样失败
Pod 滚动后的首次 metrics 读取可能短暂失败,原采样器会直接退出且主流程忽略后台状态,导致验收缺少资源曲线。\n\n采样器现在允许两次瞬时失败,连续三次失败才中止;主流程同时检查采样进程状态,确保任何曲线中断都会明确阻断验收。\n\n验证:bash -n、ShellCheck、git diff --check。
2026-07-31 03:03:11 +08:00
wangbo 78005aaf85 fix(acceptance): 兼容只读压测容器报告
验收模拟器 Pod 使用只读根文件系统,失败报告缓冲不能依赖 mktemp。改为在 Shell 内存中捕获并回放压测 JSON,同时保留原始退出状态。\n\n验证:bash -n、ShellCheck、远端脚本语法检查、git diff --check。
2026-07-31 02:56:11 +08:00
wangbo 489208cef9 fix(acceptance): 纳入 API 数据库池容量门禁
高并发 Gemini 验收暴露两地 API 数据库池仍固定为 16,导致连接池满载、readiness 失败且压力曲线只监测 Worker,无法及时识别真实瓶颈。\n\n将容量档位的数据库连接池同步应用到 API,发布工具和生产清单保持同一配置;压力采样及日志门禁覆盖 API 与 Worker 四个连接池,并在失败时保留验收 JSON 报告。\n\n验证:bash -n、ShellCheck、kubectl kustomize、git diff --check。
2026-07-31 02:46:10 +08:00
wangbo 7a193934ed fix(acceptance): 优先选择稳定版 Gemini 图片模型
生产同构验收默认优先选择当前稳定版 gemini-3.1-flash-image,并在回退选择中将非 preview 模型置于预览版之前,避免选中并发 5 的预览候选后与千请求八分钟门槛产生物理冲突。\n\n候选确定后的正式路由优先级与真实限流策略保持不变。\n\n验证:bash -n;ShellCheck;git diff --check。
2026-07-31 02:27:19 +08:00
wangbo 3976cfb64d fix(acceptance): 在集群内驱动媒体压力
将验收负载二进制改为在协议模拟器 Pod 内执行,并继续通过两个公网入口均分请求,避免本机上行带宽污染 Gateway 的 8 分钟吞吐门槛。\n\nAPI Key 与 Run Token 仅通过 kubectl exec 标准输入传入进程,不写入 Pod 规格、命令参数或验收报告;响应仍由客户端流式解码并计算哈希。\n\n验证:bash -n;ShellCheck;git diff --check。
2026-07-31 02:07:50 +08:00
wangbo 66db98ec1c fix(acceptance): 避免用户组阻塞候选队列
验收用户组仅承担身份和账务隔离,不再创建非约束性的组级并发队列,避免不同生产候选之间出现 FIFO 队头阻塞。真实候选自身的并发、排队和限流策略保持不变。\n\n验证:bash -n;ShellCheck;git diff --check。
2026-07-31 01:59:09 +08:00
wangbo a2dea335e0 fix(acceptance): 隔离高并发验收用户组
为生产同构验收创建并绑定专属用户组,避免验收账号继承默认并发 5 的限流。\n\n验收脚本通过管理 API 幂等维护用户组,并在数据库侧校验唯一用户、唯一活跃 Key、并发策略和无外部引用。\n\n验证:bash -n;ShellCheck;git diff --check。
2026-07-31 01:49:12 +08:00
wangbo 0c9960d2e6 fix(acceptance): 预授权生产候选访问规则
生产同构 Gemini 验收在入口路由修复后暴露专属 API Key 无法通过生产 Access Rule,所有已创建任务均以 no_model_candidate 失败。验收脚本现在会为选中的 Gemini 和视频候选幂等授予 platform、platform_model、base_model 三层访问权限,并在创建 Run 前反查规则完整性。\n\n验证:bash -n、ShellCheck 与 git diff --check 通过。
2026-07-31 01:18:14 +08:00
wangbo 3b67038660 fix(acceptance): 移除生产验收持久管理隧道
管理 API 改为通过短 SSH 在宁波节点调用内部 api-ningbo-edge Service,避免长期端口转发与大量集群控制连接竞争导致 SSH 握手限流。Token 和请求体以 Base64 传输且不输出。\n\n验证:内部 traffic-mode 端到端返回 200;GNU Bash 3.2;bash -n;shellcheck -x -P .;git diff --check。
2026-07-31 00:41:56 +08:00
wangbo 0e22ccb0b8 fix(acceptance): 兼容 macOS Bash 3.2
将容量报告路径中的 Bash 4 小写参数展开替换为 POSIX tr,避免验收在提交首轮负载前因 bad substitution 中断。\n\n验证:GNU Bash 3.2.57 实际执行;bash -n;shellcheck -x -P .;git diff --check。
2026-07-31 00:34:02 +08:00
wangbo 02f9071a37 fix(acceptance): 安全接管直接基线失败任务
允许新发布在 validation 状态下接管其直接 base release 的失败 Run。接管前严格核对旧 Run 状态、流量 CAS 字段和 manifest 基线,并使用旧 CAS 字段中止旧 Run,再激活新 Run。\n\n验证:bash -n;shellcheck -x -P .;git diff --check。
2026-07-31 00:28:28 +08:00
wangbo cec3d429af fix(acceptance): 支持失败验收无缝重试
在 validation 保持正式流量关闭时,允许为同一 release 与镜像 digest 创建新 Run,并仅在确认旧 Run 已失败后通过 CAS 中止旧 Run、立即激活新 Run。避免验收控制连接异常后必须先长时间切回 live 才能重试。\n\n验证:bash -n;shellcheck -x -P .;git diff --check。
2026-07-31 00:25:52 +08:00
wangbo 3053ba4925 feat(acceptance): 增加生产同构媒体压力验收模式
引入动态流量门禁、隔离验收身份与协议级 Gemini/Volces 模拟器,覆盖双站点 API、Worker、PostgreSQL、River、账务、回调和媒体物化链路。

新增 P24/P28/P32 容量阶梯、Worker 强杀恢复、真实小流量 canary、CAS 放量和失败保持 validation 的生产编排;Worker 执行槽、连接池、媒体并发和双站点副本数改为环境配置。

验证:Go 全量测试、真实 PostgreSQL 迁移集成测试、迁移安全检查、OpenAPI 生成、ShellCheck、Kustomize、gofmt 和 git diff --check。
2026-07-30 23:06:19 +08:00