HikariCP连接池探活等参数

目录

引言

参数说明

1、基本配置

2、连接生命周期

3、连接测试,探活

总结

参考


引言

HikariCP是SpringBoot默认连接池,也是java常用的数据库连接池之一,如果基础网络环境和数据库端设置了空闲连接释放,特别是探活探测需要正常配置,否则会导致应用下次从连接池中拿到异常连接而报错失败:

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

注:

参数是在以下环境测试验证:

jdk 8

HikariCP 4.0.3

参数说明

1、基本配置

minimum-idle

默认值:与 maximumPoolSize 相同。

最小空闲连接数(minimumIdle),【官方建议不要设置此值】而是允许 HikariCP 充当固定大小的连接池。有新增连接,则会新增空闲连接,至少保留当前配置的空闲连接。

maximum-pool-size

默认值:10

允许达到的最大连接数(maximumPoolSize)

connection-timeout

默认值:30000(30 秒)

等待来自池的连接的最大毫秒数(connectionTimeout),如果在没有可用连接的情况下超过此时间,将引发 SQLException。可接受的最低连接超时为 250 毫秒。

2、连接生命周期

idle-timeout

默认值:600000(10 分钟)

连接空闲的最长时间(idleTimeout)。控制允许连接在池中空闲的最长时间。必须要 minimumIdle 小于 maximumPoolSize 才生效,大于 minimumIdle 的空闲连接才会被回收。设置0 表示永远不会从池中删除空闲连接。允许的最小值为 10000 毫秒(10 秒)。

max-lifetime

默认值:1800000(30 分钟)

空闲连接的最大生命周期(maxLifetime)。0 表示没有最大生命周期(无限生命周期),当然取决于 idleTimeout 设置。允许的最小值为 30000 毫秒(30 秒)。

3、连接测试,探活

keep-alive-time

默认值:0(禁用)

最小值为 30000 毫秒(30 秒)

探活周期(keepaliveTime),连接池定期对池里的连接做数据库的测试操作,只对空闲连接做探活操作,非空闲的连接不做探活。

connection-test-query

默认值:无,可设置select 1

提供连接之前执行的查询(connectionTestQuery),以验证与数据库的连接是否仍然存在,【官方建议不要设置此值】,针对不支持JDBC4 Connection.isValid() API的“遗留”驱动程序

auto-commit=true

开启自动提交

pool-name=MyHikariCP

连接池名称

注:

注意HikariCP版本不能过低,比如使用HikariCP 3.2.0 不支持配置探活。

maxlifetime从160秒改成1600秒,应用日志会提示possibly consider using a shorter maxlifetime value,升级HikariCP到最新版本后正常。

总结

  1. 对于hikariCP的探活参数,只需要如下两个:

(1)max-lifetime=1600000

单位:毫秒

最大存活时间,需要小于MySQL参数wait_timeout值

(2)keep-alive-time=90000

单位:毫秒

探活周期,需要配置小于MySQL参数wait_timeout值

(3)HikariCP连接池版本一定要使用最新,keep-alive-time探活参数才能生效,java 7和java 6较老,不建议使用

Java 11最新是HikariCP 5.0.1

Java 8 最新是HikariCP 4.0.3

Java 7 最新是HikariCP 2.4.13

Java 6 最新是HikariCP 2.3.13

参考

GitHub - brettwooldridge/HikariCP: 光 HikariCP・A solid, high-performance, JDBC connection pool at last.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值