总量比单池大小更重要
连接池大小是每进程设置,数据库看到的是所有副本、worker、迁移任务和管理会话的总和。要按最坏情况副本数规划,而不是当前数量,并为运维保留余量。20 个副本各 50 连接,在任何 worker 启动前就是 1,000 个连接。
max_connections 100
reserved 10
usable 90
max replicas 12 x 2 pools = 24 pools
per pool = 3
池空时快速失败
连接超时限制请求等待连接槽的时长。把它设在请求截止时间之下,并返回明确的 503 或 500,而不是挂起。如果等待连接成为主要延迟,说明池太小或查询持有连接过久;不修复查询时长就扩大池,只会把瓶颈转移到数据库。
在扩展规模下验证
压测到最大副本数,并查询服务器的活跃连接数。要包含发布重叠和后台任务。如果平台会突发超过计划数量,使用数据库代理或托管连接池,让数据库看到的会话数有界。
验证预算
预期结果:峰值负载下数据库总连接数不超过 max_connections 减保留量,请求等待连接的时间低于截止时间,扩容期间没有连接拒绝。通过压测、查询 pg_stat_activity 和检查连接超时指标确认。