Hikari соединение не истекло - PullRequest
0 голосов
/ 01 марта 2019

У меня есть следующая конфигурация 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

Спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

From: 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, ограничение не применяется.

...