为了账号安全,请及时绑定邮箱和手机立即绑定

Hikari连接池启动后创建两个连接

Hikari连接池启动后创建两个连接

沧海一幻觉 2023-08-16 15:47:21
我使用 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,则不起作用。它帮助到我



查看完整回答
反对 回复 2023-08-16
?
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.0Oracle 12.2


查看完整回答
反对 回复 2023-08-16
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信