我想知道在固定大小的Hikari池中maxLifetime
和idleTimeout
设置的行为。
在什么情况下会从固定大小的池中退出连接?并且由于池是固定大小的,是否在退休后立即创建新的连接?
此外,如果数据库本身(在我的情况下为MySQL)在达到数据库等待超时后关闭连接(如果maxLifetime
不小于DB超时)会发生什么情况呢?
是否将从固定大小的池中退出该连接,并立即创建另一个连接?
谢谢!
最佳答案
当连接达到其maxLifetime或连接在池中为idleTimeout保持空闲时,HikariCP将退出连接。
默认情况下,HikariCP管家每30秒运行一次。为了维持“minimumIdle”连接,它可能会添加新的连接或退出空闲连接(客户端不为idleTimeout millis借用)。
您必须将maxLifetime设置为比(mysql)wait_timeout少几分钟,以避免断开的连接/异常。
当客户尝试借用连接时,HikariCP可能会在管家中添加新的连接。因此它可能不会在退出连接后立即添加连接。
关于HikariCP:具有固定大小的池的maxLifetime和idleTimeout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34594307/