HikariCP 数据库连接池配置

HikariCP 数据库连接池配置规范(v2025-12)

适用场景:对外提供接口请求,数据库类型 PostgreSQL / MySQL / Oracle

目标:高并发、低延迟、故障隔离


1 连接池大小与分组

参数 计算公式 示例(4C8G)
minimumIdle (CPU 核数 × 2) + 磁盘数 (4×2)+2 = 10
maximumPoolSize minIdle × (2~5) 10 × 5 = 50

约束

  • 所有节点 maximumPoolSize 总和 ≤ 数据库实例最大连接数
  • 接口线程与定时任务 必须分离双连接池,避免互相挤占

2 连接可用性校验

场景 推荐做法
JDBC4 驱动(PG 42.x+) 无需 connectionTestQuery,Hikari 自动调用 isValid()
旧驱动 显式 connectionTestQuery: SELECT 1
参数 建议值 说明
maxLifetime 900 000 ms(15 min) 到期强制回收,防止"僵"连接
leakDetectionThreshold 5 000 ms 持有超 5 s 未归还即打印堆栈,方便排查泄露
复制代码
日志全是无效堆栈,真正泄露被淹没
先拿 P99 SQL 耗时 做基线,再设 leak = P99 × 2;同时把阈值做成 环境变量,灰度时可动态降

3 超时配置(生产网络稳定,宜激进)

参数 默认 建议 备注
connectionTimeout 30 000 ms 2 000 ms 拿连接最大等待
validationTimeout 5 000 ms 1 000 ms 检测连接有效性;必须 < connectionTimeout

4 JDBC 层高可用

数据库 超时参数 单位 用法示例
PostgreSQL socketTimeout 秒 jdbc:postgresql://h1,h2/db?socketTimeout=10
MySQL socketTimeout 毫秒 jdbc:mysql://h1,h2/db?socketTimeout=10000
Oracle oracle.jdbc.ReadTimeout 毫秒 连接属性单独配置

主库不可用时,驱动按 URL 列表自动 fail-over 到同城灾备节点

超时值 ≈ 接口最大 SLA,防止慢查询霸占连接


5 配置模板(YAML)

yaml 复制代码
spring:
  datasource:
    jdbc-url: jdbc:postgresql://host1:5432,host2:5432/mydb?socketTimeout=10
    username: ${DB_USER}
    password: ${DB_PWD}
    driver-class-name: org.postgresql.Driver
    hikari:
      pool-name: HikariCP_master
      minimum-idle: 10              # 见公式
      maximum-pool-size: 50         # ≤ minIdle × 5
      connection-timeout: 3000      # 3 s
      validation-timeout: 2000      # 2 s
      leak-detection-threshold: 6000 # 6 s
      max-lifetime: 900000          # 15 min
相关推荐
CJi0NG12 分钟前
【自用】MySQL - 语法:DDL、DML、DQL、DCL
数据库·mysql
姜鱼问生1 小时前
数据库备份 + 灾难恢复演练:从 dump 恢复全库
运维·数据库
ao-weilai2 小时前
MySQL数据库:表约束
数据库·mysql·adb
ly76892 小时前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
kaixin_learn_qt_ing2 小时前
qgeoview-samples-basic
数据库
Omics Pro2 小时前
微软:多模态生物世界模型
数据库·人工智能·算法·microsoft·机器学习·自然语言处理
字节渡客3 小时前
接口明明返回成功,数据库偶尔就是没写入
数据库
Ivanqhz3 小时前
KV Cache
服务器·数据库·人工智能·深度学习·算法
Omics Pro3 小时前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
呆萌很3 小时前
数据库逻辑结构设计
数据库