背景
连接数越大不一定吞吐越高,数据库可能把时间花在调度和锁竞争。连接池是限制并发和复用连接的预算工具。
核心判断
- 用所有应用副本与后台任务的总连接数计算数据库预算。
- 观察池等待时间、使用中连接和数据库活跃会话。
- 设置空闲数量与生命周期,长事务必须单独治理。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
db.SetMaxOpenConns(40); db.SetMaxIdleConns(10); db.SetConnMaxLifetime(30*time.Minute); db.SetConnMaxIdleTime(5*time.Minute)
边界与误区
示例是 Go database/sql 的池配置,不是 PostgreSQL 服务端参数。副本扩容会乘上每副本上限;生命周期相同还可能产生集中重连。
验证方式
逐步增加并发,观察吞吐、等待与数据库 CPU,选择可稳定运行的区间。覆盖连接失败与滚动发布,确保管理和应急连接仍有余量。
小结
按数据库连接预算、实例数、查询并发和事务时长计算池大小。