我使用 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 个到实例的连接,但仅将一个连接放入连接池中。我该如何修复它?光版本是3.4.0
2 回答
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
我找到了答案。Hikari 在 checkFailFast 方法中创建第一个连接。当找到如何禁用此方法时,我更新此评论。checkFailFast
如果初始化失败超时<0,则不起作用。它帮助到我
ABOUTYOU
TA贡献1812条经验 获得超5个赞
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
添加回答
举报
0/150
提交
取消