spring-boot中配置hikari连接池属性

事件起因与一个简单应用经常发生Young GC,甚至在没有请求量的情况下也经常发生GC (Allocation Failure),后来使用mat工具进行分析,发现mysql连接相关的class居然占了40%+堆内空间。才发现spring boot的连接池大小没有配置,默认是10个连接,但实际上该应用不需要这么多。

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 "".

 

spring-boot默认连接池

spring-boot中,根据以下3个优先级加载连接池

1)如果classpath中有HikariCP,优先选择它

2)如果Tomcat pooling 连接池可用,就会选择它

3)如果以上都没有,则会选择Commons DBCP2连接池

 

Hikari配置

这里我们做一个非常低的配置(这个仅仅是一个访问量非常低的系统),如果默认的服务器,建议使用默认配置就足够了。

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

参考链接:

https://docs.spring.io/spring-boot/docs/2.1.x/reference/html/boot-features-sql.html#boot-features-configure-datasource

 

你可能感兴趣的:(Java)