Bonecp getConnection 挂起,即使设置了 IdleMaxAgeInMinutes



我正在使用bonecp来处理与数据库的连接。这是我的测试配置。

config.setJdbcUrl("jdbc:mysql://192.168.1.104/" + DATABASE);
config.setUsername(USERNAME);
config.setPassword(PASSWD);
config.setMinConnectionsPerPartition(2);
config.setMaxConnectionsPerPartition(4);
config.setIdleMaxAge(30, TimeUnit.SECONDS);
config.setIdleConnectionTestPeriod(30, TimeUnit.SECONDS);
config.setConnectionTestStatement("SELECT 1");
config.setMaxConnectionAge(1, TimeUnit.MINUTES);
config.setPartitionCount(1); 

我正在尝试从池中获取连接,在获得第 4 个连接时从池获得 5 个连接后,getConnection 挂起,因为池已耗尽,因为我没有关闭连接。但是通过配置 bonecp 会在老化后关闭连接,但这种情况不会发生。

IdleMaxAge、MaxConnectionAge 和 IdleConnectionTestPeriod 参数有什么用?

使用

config.setCloseOpenStatements(true);

我也会明白为什么这些声明仍然开放。

最新更新