HikariCP连接池
一、简介
数据库连接池,负责分配、管理和释放数据库连接,连接池容器将数据库连接对象存放在内存中,当业务访问数据时,从连接池中获取连接对象。
二、参数说明
1、maximum-pool-size: 池中最大连接数(包括空闲和正在使用的连接); 1)默认值是10, 2)<=0会认定为10,>0 and <1 会设置为mininum-idel; 策略:一般预估应用的最大连接数,后期根据监测得到一个最大值的一个平均值。 2、minimum-idle: 池中最小空闲连接数量; 1)默认值10; 2)小于池中最大连接数; 3)小于0或大于maximum-pool-size,都会重置为maximum-pool-size; 策略:一般根据系统大部分情况下的数据库连接情况取一个平均值。Hikari会尽可能、尽快地将空闲连接数维持在这个数量上。
如果为了获得最佳性能和对峰值需求的响应能力,我们也不妨让他和最大连接数保持一致,使得HikariCP成为一个固定大小的数据库连接池。 3、pool-name:连接池的名字。一般会出现在日志和JMX控制台中。默认值:auto-genenrated。建议取一个合适的名字,便于监控。 4、auto-commit:是否自动提交池中返回的连接。默认值为true。 5、idle-timeout: 连接空闲时间, 1)仅在minimum-idle小于maximum-poop-size的时候才会起作用; 2)默认值10分钟; 3)max-lifetime>0 and >=max-lifetime,会被重置为0; 4)不等于0且小于10秒,会被重置为10秒; 5)空闲连接数大于最大连接数且空闲时间超过该值,才会被释放。 策略:根据应用实际情况做调整,对于一些间歇性流量达到峰值的应用,一般需要考虑设置的比间歇时间更大,防止创建数据库连接拖慢了应用速度。 6、max-lifetime: 连接池中连接的最大生命周期; 感觉针对活跃连接, 1)不等于0且小于30秒,会被重置为30分钟; 2)默认值30分钟; 策略:一般将这个值设置的比数据库的“闲置超时时间”小几秒,以便这些连接断开后,HikariCP能迅速的创建新一轮的连接。 7、connection-timeout: 连接超时时间。默认值为30s,可以接收的最小超时时间为250ms,<250会被设置为30s。但是连接池请求也可以自定义超时时间(com.zaxxer.hikari.pool.HikariPool#getConnection(long))。 8、type:数据连接池的类型,指定hikaricp,com.zaxxer.hikari.HikariDataSource 9、连接测试查询:spring.datasource.hikari.connection-test-query=SELECT 1
三、监控优化
- 不是越大越好,而是根据CPU核心数和实际的业务场景优化,一般可采用默认设置。
- 参考博文:数据库连接池原理解释