Hikari连接没有超时

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

我的春季启动应用程序中有以下Hikari配置。查询占用的时间超过了connection-timeout时间。但是,超时从未发生过。我保持尽可能低的模拟连接超时。

    HikariConfig dataSourceConfig = new HikariConfig();
    dataSourceConfig.setDriverClassName(config.driver);
    dataSourceConfig.setJdbcUrl(config.url);
    dataSourceConfig.setUsername(config.user);
    dataSourceConfig.setPassword(config.password);
    dataSourceConfig.setConnectionTestQuery(config.validationQuery);
    dataSourceConfig.setMaximumPoolSize(config.poolMax);
    dataSourceConfig.setConnectionTimeout(300);
    dataSourceConfig.setIdleTimeout(10000);
    dataSourceConfig.setMaxLifetime(60000);
    JdbcTemplate jdbcTemplate = new JdbcTemplate(new HikariDataSource(dataSourceConfig));

这是一些日志,显示查询运行超过300毫秒。

运行查询所用的时间...... 2913

使用Hikari 3.2和mariadb

谢谢。

spring-boot mariadb hikaricp
1个回答
0
投票

来自:https://github.com/brettwooldridge/HikariCP

connectionTimeout此属性控制客户端(即您)等待池中连接的最大毫秒数。如果在没有连接可用的情况下超过此时间,则将抛出SQLException。最低可接受的连接超时为250毫秒。默认值:30000(30秒)

因此,此属性更多地是关于应用程序等待连接的时间,而不是允许查​​询执行的时间。

我想你想要的是“max_statement_time”:https://mariadb.com/kb/en/library/server-system-variables/#max_statement_time

查询在中止之前可以执行的最长时间(以秒为单位)。这包括所有查询,不仅包括SELECT语句,还包括存储过程中的语句。如果设置为0,则不应用限制。

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