spring boot中配置hikari連接池屬性方式
spring boot配置hikari連接池屬性
事件起因與一個(gè)簡(jiǎn)單應(yīng)用經(jīng)常發(fā)生Young GC,甚至在沒(méi)有請(qǐng)求量的情況下也經(jīng)常發(fā)生GC (Allocation Failure),后來(lái)使用mat工具進(jìn)行分析,發(fā)現(xiàn)mysql連接相關(guān)的class居然占了40%+堆內(nèi)空間。
才發(fā)現(xiàn)spring boot的連接池大小沒(méi)有配置,默認(rèn)是10個(gè)連接,但實(shí)際上該應(yīng)用不需要這么多。
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默認(rèn)連接池
spring-boot中,根據(jù)以下3個(gè)優(yōu)先級(jí)加載連接池
1)如果classpath中有HikariCP,優(yōu)先選擇它
2)如果Tomcat pooling 連接池可用,就會(huì)選擇它
3)如果以上都沒(méi)有,則會(huì)選擇Commons DBCP2連接池
Hikari配置
這里我們做一個(gè)非常低的配置(這個(gè)僅僅是一個(gè)訪問(wèn)量非常低的系統(tǒng)),如果默認(rèn)的服務(wù)器,建議使用默認(rèn)配置就足夠了。
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連接池配置說(shuō)明
## 數(shù)據(jù)庫(kù)配置 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 連接池配置 ------ 詳細(xì)配置請(qǐng)?jiān)L問(wèn):https://github.com/brettwooldridge/HikariCP ## 最小空閑連接數(shù)量 spring.datasource.hikari.minimum-idle=5 ## 空閑連接存活最大時(shí)間,默認(rèn)600000(10分鐘) spring.datasource.hikari.idle-timeout=180000 ## 連接池最大連接數(shù),默認(rèn)是10 spring.datasource.hikari.maximum-pool-size=10 ## 此屬性控制從池返回的連接的默認(rèn)自動(dòng)提交行為,默認(rèn)值:true spring.datasource.hikari.auto-commit=true ## 連接池名稱 spring.datasource.hikari.pool-name=MyHikariCP ## 此屬性控制池中連接的最長(zhǎng)生命周期,值0表示無(wú)限生命周期,默認(rèn)1800000即30分鐘 spring.datasource.hikari.max-lifetime=1800000 ## 數(shù)據(jù)庫(kù)連接超時(shí)時(shí)間,默認(rèn)30秒,即30000 spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.connection-test-query=SELECT 1
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
簡(jiǎn)析Java中的util.concurrent.Future接口
這篇文章主要介紹了簡(jiǎn)析Java中的util.concurrent.Future接口,作者把future歸結(jié)為在未來(lái)得到目標(biāo)對(duì)象的占位符,需要的朋友可以參考下2015-07-07java數(shù)據(jù)庫(kù)連接池的特點(diǎn)及步驟
大家好,本篇文章主要講的是數(shù)據(jù)庫(kù)連接池的特點(diǎn)及步驟,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12SpringBoot中@Autowired爆紅原理分析及解決
這篇文章主要介紹了SpringBoot中@Autowired爆紅原理分析及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Java線程中的用戶態(tài)和內(nèi)核態(tài)解讀
這篇文章主要介紹了Java線程中的用戶態(tài)和內(nèi)核態(tài)解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Struts2動(dòng)態(tài)結(jié)果集代碼示例
這篇文章主要介紹了Struts2動(dòng)態(tài)結(jié)果集的有關(guān)內(nèi)容,涉及具體代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09基于springboot 長(zhǎng)輪詢的實(shí)現(xiàn)操作
這篇文章主要介紹了基于springboot 長(zhǎng)輪詢的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Java SpringBoot快速集成SpringBootAdmin管控臺(tái)監(jiān)控服務(wù)詳解
這篇文章主要介紹了如何基于springboot-admin管控臺(tái)監(jiān)控服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09SpringBoot如何通過(guò)yml方式整合Mybatis
這篇文章主要介紹了SpringBoot如何通過(guò)yml方式整合Mybatis,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04