2016-01-04 67 views
4

我想知道maxLifetimeidleTimeout設置如何在固定大小的Hikari池中運行。HikariCP:使用固定大小池的maxLifetime和idleTimeout

在哪些情況下連接將從固定大小的池中退出?並且由於池是固定大小的,是在退休後立即創建的新連接嗎?

此外,如果數據庫本身(MySQL在我的情況下)在達到數據庫等待超時後(如果maxLifetime不小於數據庫超時)關閉連接會發生什麼?

將連接從固定大小的池中退出,另一個將立即創建?

謝謝!

+0

我也在官方的HikariCP討論組中發佈了這個問題:https://groups.google.com/d/msg/hikari-cp/W-ae_IV_C6k/d3FLbjZyDgAJ – mike

回答

7

當連接達到maxLifetime或連接在idleTimeout池中閒置時,HikariCP正在退出連接。

HikariCP管家每30秒默認運行一次。爲了保持'最小Idle'連接,它可以添加新的連接或退出閒置連接(不是由客戶端爲idleTimeout毫秒而借用)。

您必須設置maxLifetime比(mysql)wait_timeout少幾分鐘以避免斷開連接/異常。

HikariCP可能會在管家或客戶端嘗試借用連接時添加新連接。所以它可能不會在退休後立即添加連接。