fix(db): add MaxConnLifetimeJitter to prevent synchronized conn expiration storms

This commit is contained in:
2026-04-28 14:45:02 +08:00
parent 903d872e3f
commit 222335e604
+7 -5
View File
@@ -10,11 +10,12 @@ import (
// 默认连接池配置:10–50 用户私部署量级够用;超出后再按实际负载调整。
const (
defaultMaxConns = 20
defaultMinConns = 2
defaultMaxConnLifetime = time.Hour
defaultPingTimeout = 5 * time.Second
defaultHealthTimeout = time.Second
defaultMaxConns = 20
defaultMinConns = 2
defaultMaxConnLifetime = time.Hour // 单连接最大寿命,到点后回收重建
defaultMaxConnLifetimeJitter = defaultMaxConnLifetime / 10 // 在寿命基础上叠加 0~6 分钟随机抖动,防同步重建 storm
defaultPingTimeout = 5 * time.Second
defaultHealthTimeout = time.Second
)
// Pool 是 pgxpool.Pool 的类型别名,外部代码可直接以 db.Pool 表达连接池类型,
@@ -31,6 +32,7 @@ func NewPool(ctx context.Context, dsn string) (*Pool, error) {
cfg.MaxConns = defaultMaxConns
cfg.MinConns = defaultMinConns
cfg.MaxConnLifetime = defaultMaxConnLifetime
cfg.MaxConnLifetimeJitter = defaultMaxConnLifetimeJitter
pool, err := pgxpool.NewWithConfig(ctx, cfg)
if err != nil {