You've already forked agentic-coding-workflow
fix(db): add MaxConnLifetimeJitter to prevent synchronized conn expiration storms
This commit is contained in:
@@ -10,11 +10,12 @@ import (
|
|||||||
|
|
||||||
// 默认连接池配置:10–50 用户私部署量级够用;超出后再按实际负载调整。
|
// 默认连接池配置:10–50 用户私部署量级够用;超出后再按实际负载调整。
|
||||||
const (
|
const (
|
||||||
defaultMaxConns = 20
|
defaultMaxConns = 20
|
||||||
defaultMinConns = 2
|
defaultMinConns = 2
|
||||||
defaultMaxConnLifetime = time.Hour
|
defaultMaxConnLifetime = time.Hour // 单连接最大寿命,到点后回收重建
|
||||||
defaultPingTimeout = 5 * time.Second
|
defaultMaxConnLifetimeJitter = defaultMaxConnLifetime / 10 // 在寿命基础上叠加 0~6 分钟随机抖动,防同步重建 storm
|
||||||
defaultHealthTimeout = time.Second
|
defaultPingTimeout = 5 * time.Second
|
||||||
|
defaultHealthTimeout = time.Second
|
||||||
)
|
)
|
||||||
|
|
||||||
// Pool 是 pgxpool.Pool 的类型别名,外部代码可直接以 db.Pool 表达连接池类型,
|
// Pool 是 pgxpool.Pool 的类型别名,外部代码可直接以 db.Pool 表达连接池类型,
|
||||||
@@ -31,6 +32,7 @@ func NewPool(ctx context.Context, dsn string) (*Pool, error) {
|
|||||||
cfg.MaxConns = defaultMaxConns
|
cfg.MaxConns = defaultMaxConns
|
||||||
cfg.MinConns = defaultMinConns
|
cfg.MinConns = defaultMinConns
|
||||||
cfg.MaxConnLifetime = defaultMaxConnLifetime
|
cfg.MaxConnLifetime = defaultMaxConnLifetime
|
||||||
|
cfg.MaxConnLifetimeJitter = defaultMaxConnLifetimeJitter
|
||||||
|
|
||||||
pool, err := pgxpool.NewWithConfig(ctx, cfg)
|
pool, err := pgxpool.NewWithConfig(ctx, cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user