背景

连接数越大不一定吞吐越高,数据库可能把时间花在调度和锁竞争。连接池是限制并发和复用连接的预算工具。

核心判断

  1. 用所有应用副本与后台任务的总连接数计算数据库预算。
  2. 观察池等待时间、使用中连接和数据库活跃会话。
  3. 设置空闲数量与生命周期,长事务必须单独治理。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

db.SetMaxOpenConns(40); db.SetMaxIdleConns(10); db.SetConnMaxLifetime(30*time.Minute); db.SetConnMaxIdleTime(5*time.Minute)

边界与误区

示例是 Go database/sql 的池配置,不是 PostgreSQL 服务端参数。副本扩容会乘上每副本上限;生命周期相同还可能产生集中重连。

验证方式

逐步增加并发,观察吞吐、等待与数据库 CPU,选择可稳定运行的区间。覆盖连接失败与滚动发布,确保管理和应急连接仍有余量。

小结

按数据库连接预算、实例数、查询并发和事务时长计算池大小。