我的春季启动应用程序中有以下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
谢谢。
来自: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,则不应用限制。