HikariCP 数据库连接池配置检视
HikariCP 数据库连接池配置规范v2025-12适用场景对外提供接口请求数据库类型 PostgreSQL / MySQL / Oracle目标高并发、低延迟、故障隔离1 连接池大小与分组参数计算公式示例4C8GminimumIdle(CPU 核数 × 2) 磁盘数(4×2)2 10maximumPoolSizeminIdle × (2~5)10 × 5 50约束所有节点maximumPoolSize总和≤ 数据库实例最大连接数接口线程与定时任务必须分离双连接池避免互相挤占2 连接可用性校验场景推荐做法JDBC4 驱动PG 42.x无需connectionTestQueryHikari 自动调用isValid()旧驱动显式connectionTestQuery: SELECT 1参数建议值说明maxLifetime900 000 ms15 min到期强制回收防止“僵”连接leakDetectionThreshold5 000 ms持有超 5 s 未归还即打印堆栈方便排查泄露日志全是无效堆栈真正泄露被淹没 先拿 P99 SQL 耗时 做基线再设 leak P99 × 2同时把阈值做成 环境变量灰度时可动态降3 超时配置生产网络稳定宜激进参数默认建议备注connectionTimeout30 000 ms2 000 ms拿连接最大等待validationTimeout5 000 ms1 000 ms检测连接有效性必须 connectionTimeout4 JDBC 层高可用数据库超时参数单位用法示例PostgreSQLsocketTimeout秒jdbc:postgresql://h1,h2/db?socketTimeout10MySQLsocketTimeout毫秒jdbc:mysql://h1,h2/db?socketTimeout10000Oracleoracle.jdbc.ReadTimeout毫秒连接属性单独配置主库不可用时驱动按 URL 列表自动fail-over到同城灾备节点超时值≈ 接口最大 SLA防止慢查询霸占连接5 配置模板YAMLspring:datasource:jdbc-url:jdbc:postgresql://host1:5432,host2:5432/mydb?socketTimeout10username:${DB_USER}password:${DB_PWD}driver-class-name:org.postgresql.Driverhikari:pool-name:HikariCP_masterminimum-idle:10# 见公式maximum-pool-size:50# ≤ minIdle × 5connection-timeout:3000# 3 svalidation-timeout:2000# 2 sleak-detection-threshold:6000# 6 smax-lifetime:900000# 15 min