Hikari连接池启动后创建两个连接
Hikari connection pool creates two connection after starting
我使用具有以下设置的 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
我找到了答案。 Hikari 在 checkFailFast 方法中创建第一个连接。当找到如何禁用此方法时,我会更新此评论。如果 initializationFailTimeout<0,checkFailFast
不起作用。对我有帮助
After getConnection() hikari try to get 2 connections to instance, but put in connection pool just one connection. How can I fix it?
此行为没有任何可修复的。这很简单,两个连接被打开,其中一个被关闭。
第二个连接关闭的原因是你设置了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
我使用具有以下设置的 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
我找到了答案。 Hikari 在 checkFailFast 方法中创建第一个连接。当找到如何禁用此方法时,我会更新此评论。如果 initializationFailTimeout<0,checkFailFast
不起作用。对我有帮助
After getConnection() hikari try to get 2 connections to instance, but put in connection pool just one connection. How can I fix it?
此行为没有任何可修复的。这很简单,两个连接被打开,其中一个被关闭。
第二个连接关闭的原因是你设置了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