我使用 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
提交
取消