当前位置: 首页 > 知识库问答 >
问题:

可能考虑使用较短的最大寿命值-HICALI连接池Spring引导

宋飞舟
2023-03-14

启动我的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

共有3个答案

白侯林
2023-03-14

在我的例子中,我通过这个设置解决了这个问题

@Configuration
public class HikariSetting{

    @Bean
    public HikariConfig config() {
        HikariConfig hikariConfig = new HikariConfig();
        
        // other setting
        
        hikariConfig.addDataSourceProperty("socketTimeout", 600000);
        hikariConfig.setMaxLifetime(600000);
        
        return hikariConfig;
    }
    
}

参考这个

寿阳华
2023-03-14

您可以在application.properties文件中设置如下值

spring.datasource.hikari.max寿命:600000#10分钟等待时间

竺承望
2023-03-14

问题是Spring的默认值。数据源。希卡里。最大寿命(30分钟-https://github.com/brettwooldridge/HikariCP#configuration-knobs baby)高于数据库的“wait_timeout”(在我的例子中是10分钟)
所以你有两个选择,要么降低hikari。maxLifetime低于10分钟,或者增加数据库的“等待超时”属性。

 类似资料:
  • 嘿,我正在使用Glassfish开源v4,我遇到了一个奇怪的问题。 我在管理控制台中定义了到Oracle 11g的JDBC连接池,并设置了: 初始和最小池大小:500 最大游泳池大小:1000 池大小调整数量::750 我已经为这个连接池创建了一个特定的用户。然而,有时当我检查数据库中打开的连接时,我发现有1000多个连接(我看到的最大连接数是1440个) 当发生这种情况时,任何查询尝试都会失败,

  • 我们的系统由许多运行在“干净”机器上的python脚本组成,也就是说,它们需要尽可能少的额外软件。有没有一种方法可以使用OpenTelemetry而不必在这些机器上运行额外的服务器?是否有一种推送模式来发送数据而不是拉送?

  • 我正在研究一个简单的tic-tac-toe问题,我正在努力理解Minimax算法是如何工作的。 如果我使用效用函数1表示X win,-1表示O win,0表示正在进行的游戏,那么我不明白算法如何优先考虑较短的解决方案。据我所知,它首先到达最深的节点,如果它不是最短的路径,但它会导致可能的胜利,那么它会选择它。 让我在例子中解释一下。这是电路板的状态和X转角(符号来自https://www.hack

  • spring-引导是一个非常棒的工具,但是当涉及到更高级的配置时,文档就有点稀疏了。如何设置数据库连接池的最大大小等属性? spring-boot支持、和它们都是以相同的方式配置的吗?

  • 问题内容: 我正在尝试编写一个MySQL查询,在其中提取卖方的信息和她最受欢迎的产品。这取决于浏览量最多的产品,即。 不过,以下查询只是拉出一种随机产品,而不是浏览量最多的产品。 或更准确地说,实际上是正确的数字,但是如何获得其他 产品字段 (id,图像,标题等)相对于具有最多页面浏览量的产品。 表数据: 卖方: 产品: 预期结果(精简): 结果应按浏览量列出经过精心挑选的卖家信息及其最受欢迎的产