我的Spring Boot应用程序中具有以下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
谢谢。
答案 0 :(得分:0)
发件人:https://github.com/brettwooldridge/HikariCP
connectionTimeout 此属性控制客户端(即您)等待来自池的连接的最大毫秒数。如果超过此时间而没有可用的连接,则会抛出SQLException。可接受的最低连接超时为250 ms。默认值:30000(30秒)
因此,此属性更多地是关于应用程序等待连接的时间,而不是查询被允许执行的时间。
我认为您想要的是“ max_statement_time”:https://mariadb.com/kb/en/library/server-system-variables/#max_statement_time
中止查询之前可以执行的最长时间(以秒为单位)。这不仅包括SELECT语句,还包括所有查询,但不包括存储过程中的语句。如果设置为0,则不应用限制。