springBoot2.x中使用Hikari連接池----HikariCP配置

一、簡介

HikariCP是快速,簡單,可靠和生產就緒的JDBC連接池。在Spring Boot 2.0版本中,默認數據庫池技術已從Tomcat Pool切換到HikariCP。這是因爲HikariCP提供了卓越的性能。現在自Spring Boot 2.0發佈以來,spring-boot-starter-jdbc和spring-boot-starter-data-jpa默認解析HikariCP依賴,spring.datasource.type屬性將HikariDataSource作爲默認值。Spring引導首先選擇HikariCP然後是Tomcat池,然後根據可用性選擇Commons DBCP2。在這個頁面上,我們將提供帶有Spring Boot Data和MySQL的HikariCP的完整示例。我們將創建一個演示應用程序,我們將在其中執行數據庫中的創建和讀取操作。我們將配置HikariCP屬性,例如文件中的connectionTimeout,minimumIdle,maximumPoolSize,idleTimeout,maxLifetime和autoCommit application.properties。
 

二、配置

對於Hikari連接池配置,我們通過使用spring.datasource.type並在application.properties文件中爲其分配連接池實現的完全限定名稱來啓用它,如下所示。

spring.datasource.type = com.zaxxer.hikari.HikariDataSource 

如果我們使用的是Spring Boot 2.0及以上版本,Spring Boot會HikariDataSource默認選擇,我們不需要配置上面的行。
現在要配置Hikari特定的連接池設置,Spring Boot提供了spring.datasource.hikari.*在application.properties文件中使用的前綴。我們將在這裏討論一些常用的配置。

1、connectionTimeout
connectionTimeout是客戶端等待連接池連接的最大毫秒數。我們需要將其配置如下。

spring.datasource.hikari.connection-timeout=20000 ;

2、minimumIdle
minimumIdle是HikariCP在連接池中維護的最小空閒連接數。它配置如下。

spring.datasource.hikari.minimum-idle=5

3、maximumPoolSize
maximumPoolSize配置最大池大小。它配置如下。

spring.datasource.hikari.maximum-pool-size=12

4、idleTimeout
idleTimeout是允許連接在連接池中空閒的最長時間(以毫秒爲單位)。它配置如下。

spring.datasource.hikari.idle-timeout=300000

5、maxLifetime
maxLifetime是池中連接關閉後的最長生命週期(以毫秒爲單位)。它配置如下。

spring.datasource.hikari.max-lifetime=1200000

使用中的連接永遠不會退役,只有當它關閉時纔會在最長生命週期後刪除。

6、autoCommit
autoCommit配置從池返回的連接的默認自動提交行爲。默認值爲true。

spring.datasource.hikari.auto-commit=true

7、基本配置示例:

# mysql
spring.datasource.url=jdbc:mysql://{{virtual_ip}}:33306/center?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password={{db_pass}}
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
spring.datasource.timeBetweenEvictionRunsMillis=60000

# conn pool
#數據源類型
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
#連接池名稱,默認HikariPool-1
spring.datasource.hikari.pool-name=KevinHikariPool
spring.datasource.hikari.auto-commit=true 
#最大連接數,小於等於0會被重置爲默認值10;大於零小於1會被重置爲minimum-idle的值
spring.datasource.hikari.maximum-pool-size=16
#連接超時時間:毫秒,小於250毫秒,否則被重置爲默認值30秒
spring.datasource.hikari.connection-timeout=60000
#最小空閒連接,默認值10,小於0或大於maximum-pool-size,都會重置爲maximum-pool-size
spring.datasource.hikari.minimum-idle=4
#空閒連接超時時間,默認值600000(10分鐘),大於等於max-lifetime且max-lifetime>0,會被重置爲0;不等於0且小於10秒,會被重置爲10秒。
# 只有空閒連接數大於最大連接數且空閒時間超過該值,纔會被釋放
spring.datasource.hikari.idle-timeout=500000
#連接最大存活時間.不等於0且小於30秒,會被重置爲默認值30分鐘.設置應該比mysql設置的超時時間短
spring.datasource.hikari.max-lifetime=1200000
spring.datasource.hikari.connection-test-query=SELECT 1

三、解決異常信息

com.zaxxer.hikari.pool.PoolBase[176] - KevinHikariPool - Failed to validate connection com.mysql.jdbc.JDBC4Connection@69154079 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.

配置:

spring.datasource.hikari.max-lifetime=1200000

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章