springboot2中HikariCP連接池的相關配置問題
springboot2 HikariCP連接池相關配置
項目中使用了springboot2.1.4作為框架,數據庫鏈接池選用了號稱非常快的也是springboot默認支持的HikariCP作為連接池。
引入springboot完全支持,所以不需要引入額外的jar,配置文件如下:
spring:
application:
name: framework-manage
profiles:
active: dev
#數據庫連接
datasource:
url: jdbc:mysql://localhost:3306/rz_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
username: root
password: root
#連接池
hikari:
minimum-idle: 5
maximum-pool-size: 15
auto-commit: true
idle-timeout: 30000
pool-name: DatebookHikariCP
max-lifetime: 120000
connection-timeout: 30000
connection-test-query: SELECT 1
在剛開始配置時候,將max-lifetime設置為1800000(網上很多博客設置均為這個),隔上一段時間不連接,就會出現以下警告,需要等待四五個這種警告后,才能請求回數據。
DatebookHikariCP - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@23338be2 (No operations allowed after connection closed.)
. Possibly consider using a shorter maxLifetime value.
修改過數據庫的相關配置,還是不行,后來翻譯了下這段話,發(fā)現是說可能考慮使用較短的maxLifetime值,這個值最小是30000,于是將其修改為30000后,又出現了下面這個警告:
DatebookHikariCP - idleTimeout is close to or more than maxLifetime, disabling it.
這個只是在啟動時候出現,并不影響操作,后來查詢發(fā)現,設置idleTimeout 時候有一個規(guī)則,即如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,則會被重置為0(代表永遠不會退出);如果idleTimeout!=0且小于10秒,則會被重置為10秒。
于是將max-lifetime設置為了120000,這個問題不在出現。
HikariCP常用的參數配置
1.autoCommit
自動提交從池中返回的連接,默認為true。
2.connectionTimeout
等待來自池的連接的最大毫秒數,默認為30000,如果小于250毫秒,則被重置回30秒。
3.idleTimeout
連接允許在池中閑置的最長時間,默認為600000,即10分鐘。
如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,則會被重置為0(代表永遠不會退出);如果idleTimeout!=0且小于10秒,則會被重置為10秒。
只有當minimumIdle小于maximumPoolSize時,這個參數才生效,當空閑連接數超過minimumIdle,而且空閑時間超過idleTimeout,則會被移除。
4.maxLifetime
池中連接最長生命周期。默認為1800000,如果不等于0且小于30秒則會被重置回30分鐘。
5.minimumIdle
控制連接池空閑連接的最小數量,當連接池空閑連接少于minimumIdle,而且總共連接數不大于maximumPoolSize時,HikariCP會盡力補充新的連接。
為了性能考慮,不建議設置此值,而是讓HikariCP把連接池當做固定大小的處理,默認minimumIdle與maximumPoolSize一樣。
當minIdle<0或者minIdle>maxPoolSize,則被重置為maxPoolSize,該值默認為10。
6.maximumPoolSize
池中最大連接數,包括閑置和使用中的連接。
默認為10。
如果maxPoolSize小于1,則會被重置。
當minIdle<=0被重置為DEFAULT_POOL_SIZE則為10;如果minIdle>0則重置為minIdle的值。
7.poolName
連接池的用戶定義名稱,主要出現在日志記錄和JMX管理控制臺中以識別池和池配置。
默認為HikariPool-1。
8.readOnly
從池中獲取的連接是否默認處于只讀模式。
默認為false。
9.connection-test-query
如果您的驅動程序支持JDBC4,我們強烈建議您不要設置此屬性。
這是針對不支持JDBC4的“傳統(tǒng)”驅動程序Connection.isValid() API。
這是在連接從池中獲得連接以確認與數據庫的連接仍然存在之前將要執(zhí)行的查詢。
再一次,嘗試運行沒有此屬性的池,如果您的驅動程序不符合JDBC4的要求,HikariCP將記錄一個錯誤以告知您。
默認值:無
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決java執(zhí)行cmd命令調用ffmpeg報錯Concat error - No such filter ''[0,0]
這篇文章主要介紹了java執(zhí)行cmd命令,調用ffmpeg報錯Concat error - No such filter '[0,0]'解決方法,本文通過截圖實例代碼說明給大家介紹的非常詳細,對大家的工作或學習有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
一文教會Java新手使用Spring?MVC中的查詢字符串和查詢參數
在使用springMVC框架構建web應用,客戶端常會請求字符串、整型、json等格式的數據,這篇文章主要給大家介紹了關于通過一文教會Java新手使用Spring?MVC中的查詢字符串和查詢參數的相關資料,需要的朋友可以參考下2024-01-01
Java?Spring?boot?配置JDK和MAVEN開發(fā)環(huán)境的過程
本文詳細介紹了如何配置JDK和Maven環(huán)境,包括JDK的安裝與環(huán)境變量設置,Maven的下載、配置環(huán)境變量和設置阿里云倉庫,最后簡述了在IntelliJ?IDEA中配置JDK和Maven的步驟,本教程適合Java開發(fā)新手進行開發(fā)環(huán)境的搭建,確保順利進行Java項目的開發(fā)2024-11-11

