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
相关推荐
zyxqyy&∞1 小时前
mysql代码小练-3
数据库·mysql
万邦科技Lafite2 小时前
一键获取淘宝关键词商品信息指南
开发语言·数据库·python·商品信息·开放api·电商开放平台
程序猿20232 小时前
MySQL的索引
数据库·mysql
m0_692540072 小时前
数据库表设计规范
数据库·oracle
Coder_Boy_2 小时前
【人工智能应用技术】-基础实战-环境搭建(基于springAI+通义千问)(二)
数据库·人工智能
云贝教育-郑老师2 小时前
【OceanBase OBCE V3.0认证】
数据库·oceanbase
思成不止于此4 小时前
【MySQL 零基础入门】DDL 核心语法全解析:数据库与表结构操作篇
数据库·笔记·学习·mysql
aspirestro三水哥4 小时前
2.5构建Xenomai测试与演示镜像
数据库·rtos·xenomai
随机昵称_1234564 小时前
postgresql连接报错Invalid SCRAM client initialization
数据库·postgresql