spring boot配置hikari連接池屬性
事件起因與一個簡單應用經常發生Young GC,甚至在沒有請求量的情況下也經常發生GC (Allocation Failure),后來使用mat工具進行分析,發現mysql連接相關的class居然占了40%+堆內空間。
才發現spring boot的連接池大小沒有配置,默認是10個連接,但實際上該應用不需要這么多。
1
2
3
4
5
|
The class "com.mysql.cj.jdbc.AbandonedConnectionCleanupThread" , loaded by "org.apache.catalina.loader.ParallelWebappClassLoader @ 0xf8dfdf30" , occupies 19 , 279 , 792 ( 41.23 %) bytes. The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Node[]" loaded by "<system class loader>" . |
spring-boot默認連接池
spring-boot中,根據以下3個優先級加載連接池
1)如果classpath中有HikariCP,優先選擇它
2)如果Tomcat pooling 連接池可用,就會選擇它
3)如果以上都沒有,則會選擇Commons DBCP2連接池
Hikari配置
這里我們做一個非常低的配置(這個僅僅是一個訪問量非常低的系統),如果默認的服務器,建議使用默認配置就足夠了。
1
2
3
4
5
6
7
8
|
spring.datasource.hikari.maximum-pool-size= 2 spring.datasource.hikari.minimum-idle= 1 spring.datasource.hikari.idle-timeout= 600000 spring.datasource.hikari.max-lifetime= 1800000 spring.datasource.hikari.connection-timeout= 500 spring.datasource.hikari.login-timeout= 500 spring.datasource.hikari.validation-timeout= 1000 spring.datasource.hikari.initialization-fail-timeout= 1000 |
Hikari連接池配置說明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
## 數據庫配置 spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.url = jdbc:mysql: //localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username = root spring.datasource.password = root ## Hikari 連接池配置 ------ 詳細配置請訪問:https: //github.com/brettwooldridge/HikariCP ## 最小空閑連接數量 spring.datasource.hikari.minimum-idle= 5 ## 空閑連接存活最大時間,默認 600000 ( 10 分鐘) spring.datasource.hikari.idle-timeout= 180000 ## 連接池最大連接數,默認是 10 spring.datasource.hikari.maximum-pool-size= 10 ## 此屬性控制從池返回的連接的默認自動提交行為,默認值: true spring.datasource.hikari.auto-commit= true ## 連接池名稱 spring.datasource.hikari.pool-name=MyHikariCP ## 此屬性控制池中連接的最長生命周期,值 0 表示無限生命周期,默認 1800000 即 30 分鐘 spring.datasource.hikari.max-lifetime= 1800000 ## 數據庫連接超時時間,默認 30 秒,即 30000 spring.datasource.hikari.connection-timeout= 30000 spring.datasource.hikari.connection-test-query=SELECT 1 |
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/loophome/article/details/94458251