在启动我的SpringBoot应用程序之后,在服务器启动的几分钟后得到一个异常。我没有在外部使用任何HikariPool配置,Spring Boot默认使用HikariPool,这是我在控制台中得到的错误:
2020-02-20 03:16:23 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@4c4180c8 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:28 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@679c2f50 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:33 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@16083061 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:38 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@4fcaf421 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:43 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@33df5d54 (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:48 - HikariPool-4 - Failed to validate connection
com.mysql.cj.jdbc.ConnectionImpl@373d288c (No operations allowed after connection closed.).
Possibly consider using a shorter maxLifetime value.
2020-02-20 03:16:48 - SQL Error: 0, SQLState: 08003
2020-02-20 03:16:48 - HikariPool-4 - Connection is not available, request timed out after
30156ms.
2020-02-20 03:16:48 - No operations allowed after connection closed.
2020-02-20 03:16:48 - Servlet.service() for servlet [dispatcherServlet] in context with path
[] threw exception [Request processing failed; nested exception is
org.springframework.dao.DataAccessResourceFailureException: Unable to acquire JDBC
Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to
acquire JDBC Connection] with root cause
发布于 2020-02-25 00:29:07
问题是spring.datasource.hikari.maxLifetime的默认值(30分钟- https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby)高于数据库的"wait_timeout“(在我的例子中是10分钟)。
因此,您有两个选择,要么将hikari.maxLifetime降低到10分钟以下,要么增加数据库的"wait_timeout“属性。
发布于 2020-06-24 01:15:09
您可以在application.properties文件中设置如下值
spring.datasource.hikari.maxLifeTime : 600000 #10分钟等待时间
发布于 2022-01-11 09:52:23
在我的例子中,我通过这个设置解决了这个问题
@Configuration
public class HikariSetting{
@Bean
public HikariConfig config() {
HikariConfig hikariConfig = new HikariConfig();
// other setting
hikariConfig.addDataSourceProperty("socketTimeout", 600000);
hikariConfig.setMaxLifetime(600000);
return hikariConfig;
}
}
参考this
https://stackoverflow.com/questions/60310858
复制相似问题