Spring boot 2.0 Hikari自动连接不起作用

问题描述 投票:1回答:1

我正在使用spring-boot,Hibernate和MsSql。我将应用程序部署到服务器后,它在数据库断开连接且无法重新连接后的一段时间内运行良好。在日志中,它显示Hikari正在尝试连接但无法连接。

我正在从外部文件中读取数据库属性并获得数据库连接。我是否需要在某些地方同时指定Hikari数据库属性,否则它将自动使用。

in application.properties specified
spring.datasource.hikari.connection-timeout = 20000 
spring.datasource.hikari.minimum-idle= 10 
spring.datasource.hikari.maximum-pool-size= 10
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.auto-commit =true







    Caused by: java.sql.SQLException: HikariPool-2 - Interrupted during connection acquisition
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:200) ~[HikariCP-3.4.1.jar:?]
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:161) ~[HikariCP-3.4.1.jar:?]
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) ~[HikariCP-3.4.1.jar:?]
    at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    ... 116 more

org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariPool-2 - Connection is not available, request timed out after 30000ms.
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
hibernate spring-boot jdbc hikaricp mssql-jdbc
1个回答
0
投票

最大寿命

此属性控制连接中的最大生存期池。使用中的连接只有在被使用时才会永不退出关闭后将其移除。在逐个连接的基础上,施加较小的负衰减,以避免质量消亡。池。

spring.datasource.hikari.max-lifetime=1800000

您将其设置为30分钟。如果所有连接都空闲30分钟。然后在那之后,您将无法连接到数据库。使其为0表示无限。

spring.datasource.hikari.max-lifetime=0
spring.datasource.hikari.minimum-idle=5

您还需要降低spring.datasource.hikari.minimum-idle。最小空闲10和最大池大小10表示所有连接都处于空闲状态,并且10分钟后您将无法连接数据库。

© www.soinside.com 2019 - 2024. All rights reserved.