我正在使用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]
最大寿命
此属性控制连接中的最大生存期池。使用中的连接只有在被使用时才会永不退出关闭后将其移除。在逐个连接的基础上,施加较小的负衰减,以避免质量消亡。池。
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分钟后您将无法连接数据库。