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 通过。
This commit is contained in:
2026-07-31 03:46:41 +08:00
parent 75a56b21bc
commit 36546bd5c4
11 changed files with 80 additions and 18 deletions
+4
View File
@@ -32,6 +32,7 @@ const (
type PostgresPoolOptions struct {
MaxConns int
MinIdleConns int
MaxConnIdleTime time.Duration
IdleInTransactionTimeout time.Duration
LockTimeout time.Duration
}
@@ -132,6 +133,9 @@ func postgresPoolConfigWithOptions(databaseURL string, options PostgresPoolOptio
config.MaxConns = int32(options.MaxConns)
}
config.MinIdleConns = int32(min(max(options.MinIdleConns, 0), int(config.MaxConns)))
if options.MaxConnIdleTime > 0 {
config.MaxConnIdleTime = options.MaxConnIdleTime
}
return config, nil
}