连接池配置计算

根据并发量和数据库规格计算最优连接池大小

ms
x
公式 1(基于并发)
3
ceil(并发 × 耗时秒 × 系数)
公式 2(PG 官方)
9
核心数 × 2 + 1
推荐连接池大小
3
上限为 max_conn × 80% = 80
三组数值对比
公式 1(并发×耗时×系数)3
公式 2(核心数×2+1)9
推荐值(取三者最小)3
常用连接池配置参考(推荐值 3
HikariCP (Java)
# HikariCP (Java)
maximumPoolSize=3
minimumIdle=1
connectionTimeout=30000
idleTimeout=600000
maxLifetime=1800000
Node.js pg
# Node.js pg
const pool = new Pool({
  max: 3,
  idleTimeoutMillis: 30000,
  connectionTimeoutMillis: 2000,
});
SQLAlchemy (Python)
# SQLAlchemy (Python)
engine = create_engine(
  DB_URL,
  pool_size=3,
  max_overflow=1,
  pool_timeout=30,
  pool_recycle=1800,
)
pgbouncer
# pgbouncer.ini
[databases]
mydb = host=127.0.0.1 dbname=prod

[pgbouncer]
pool_mode = transaction
default_pool_size = 3
max_client_conn = 100
reserve_pool_size = 1

公式 1 反映「同时正在执行的查询数」,公式 2(PostgreSQL 官方经验)反映「CPU 并行收益上限」,最终取较小值与数据库 80% 上限中的最小值,避免连接过多反而因上下文切换降低吞吐。

使用帮助