Пул соединений Hikari создает два соединения после запуска - PullRequest
1 голос
/ 20 сентября 2019

Я использую пул соединений Hikary со следующими настройками:

  HikariDataSource dataSource = new HikariDataSource();
        dataSource.setMinimumIdle(0);
        dataSource.setMaximumPoolSize(Integer.MAX_VALUE);
        dataSource.setJdbcUrl(jdbcConnectionString);
        dataSource.setConnectionTestQuery("select 1");
        dataSource.setIdleTimeout(TimeUnit.SECONDS.toMillis(60));
    dataSource.getConnection();

После getConnection () hikari пытается получить 2 соединения с экземпляром, но помещает в пул соединений только одно соединение.Как я могу это исправить?Версия hikari 3.4.0

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Я нашел ответ.Hikari создает первое соединение в методе checkFailFast.Я обновляю этот комментарий, когда найду способ отключить этот метод.checkFailFast не работает, если initializationFailTimeout <0.Это помогает мне </p>

0 голосов
/ 24 сентября 2019

После getConnection () hikari попытайтесь получить 2 соединения с экземпляром, но поместите в пул соединений только одно соединение.Как я могу это исправить?

Нет ничего, чтобы исправить это поведение.Это просто означает, что два соединения были открыты, и одно из них было закрыто.

Причина, по которой второе соединение было закрыто, заключается в том, что вы установили setMinimumIdle(0), то есть в пуле нет свободного соединения, и все незанятые соединения закрыты.

Если вы хотите видеть обаподключение в бассейн, простой набор setMinimumIdle(1).После вызова DataSource.getConnection() в пуле будет два соединения - одно ваше и одно простое.

Если вы вообще не хотите открывать второе соединение, установите

    config.setMinimumIdle( 1 );
    config.setMaximumPoolSize( 1 );

Но подумайте дважды, почему вы используете пул соединений только с одним соединением.

Вы можете в любом случае увеличить оба параметра позже, пока пул работает.

 HikariConfigMXBean bn = DataSource.ds.getHikariConfigMXBean()
 bn.setMaximumPoolSize(10)
 bn.setMinimumIdle(10)

Это (не мгновенно) откроет 9 дополнительных подключений к базе данных.

Обратите внимание, что при установке MaximumPoolSize == MinimumIdle количество подключений в пуле остается стабильным, подключения не выполняются.открыт или закрыт, что, вероятно, вы хотите наблюдать.

Протестировано с Hicari 3.4.0 и Oracle 12.2

...