在 spring boot 2.x / 3.x 项目中,hikaricp 已经成为默认数据库连接池。
但很多人对它的参数一知半解,甚至直接照抄配置,结果线上问题频发。
一、为什么要用数据库连接池?
每次访问数据库,如果都经历:
- 创建 tcp 连接
- mysql 身份验证
- 执行 sql
- 关闭连接
这些操作非常耗时,在并发场景下会严重拖慢系统性能。
👉 数据库连接池的作用就是:
- 预先创建好一定数量的数据库连接
- 请求来了直接复用
- 用完放回池中
- 避免频繁创建 / 销毁连接
二、什么是 hikaricp?
hikaricp 是一个高性能 jdbc 连接池实现,也是:
- ✅ spring boot 官方默认连接池
- ✅ 目前主流连接池中性能最优
- ✅ 设计目标:快、轻量、简单
spring boot 3.x 中,哪怕你什么都不配置,底层默认用的就是它。
三、典型 hikari 配置示例
spring:
datasource:
hikari:
connection-test-query: select 1
connection-timeout: 60000
idle-timeout: 500000
max-lifetime: 540000
maximum-pool-size: 10
minimum-idle: 5
pool-name: aireporthikaripool下面我们逐个参数拆开讲。
四、hikari 核心参数详解
1️⃣ connection-test-query
connection-test-query: select 1
作用:
- 用于检测数据库连接是否可用
是否必须?
- ❌ 大多数情况下不需要
- hikari 默认使用 jdbc4 的
isvalid()方法,性能更好
建议:
# mysql / postgresql 可直接删除 # connection-test-query: select 1
2️⃣ connection-timeout(非常重要)
connection-timeout: 60000
作用:
- 从连接池获取连接时,最多等待多久
- 超过时间直接抛异常
风险:
- 时间过长(60 秒)会导致线程长时间阻塞
- 在高并发下可能拖垮整个服务
推荐值:
connection-timeout: 30000
3️⃣ idle-timeout
idle-timeout: 500000
作用:
- 空闲连接在池中能存活的最长时间
- 超时后会被回收
建议:
idle-timeout: 300000 # 5 分钟
4️⃣ max-lifetime(非常重要)
max-lifetime: 540000
作用:
- 一个连接在池中的最大生命周期
- 到期后强制销毁并重建
为什么需要?
- 防止数据库(如 mysql)主动断开“老连接”
重要规则:
max-lifetime > idle-timeout
推荐值:
max-lifetime: 1800000 # 30 分钟
5️⃣ maximum-pool-size
maximum-pool-size: 10
作用:
- 连接池允许的最大连接数
经验值:
| 场景 | 推荐 |
|---|---|
| 单体应用 | 10–20 |
| 微服务 | 5–15 |
| 高并发 | 需压测 |
❗ 并不是越大越好,数据库本身也有连接上限
6️⃣ minimum-idle
minimum-idle: 5
作用:
- 保持的最小空闲连接数
建议:
- 一般设置为
maximum-pool-size的一半左右 - 不要和最大连接数相同,否则连接永不释放
7️⃣ pool-name
pool-name: aireporthikaripool
作用:
- 连接池名称
- 仅用于日志和监控识别
建议:
- 给每个服务一个有意义的名字,方便排查问题
五、常见错误配置总结
❌ 连接生命周期太短
❌ connection-timeout 设太大
❌ max-lifetime 小于 idle-timeout
❌ 盲目把 pool-size 调很大
这些都会导致:
- 连接频繁重建
- 吞吐下降
- 数据库压力异常
六、推荐的「稳定生产配置」
spring:
datasource:
hikari:
connection-timeout: 30000
idle-timeout: 300000
max-lifetime: 1800000
maximum-pool-size: 10
minimum-idle: 5
pool-name: aireporthikaripool
👉 适合 90% 中小型 spring boot 项目
七、总结
hikaricp 的核心思想不是“多”和“复杂”,
而是“刚刚好”和“足够快”。
到此这篇关于spring boot 默认数据库连接池 hikaricp全文解析的文章就介绍到这了,更多相关springboot数据库连接池 hikaricp内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论