Я использую DBCP2 BasicDataSource для управления подключениями к базе данных. Когда я тестирую, я использую getNumActive() и getNumIdle() для вывода статуса пула. Я заканчиваю тем, что активные соединения продолжают увеличиваться, в то время как бездействующее соединение всегда равно 0.
Вот мой код:
public static Connection getCnn() throws Exception {
Connection cnn = null;
if (ds.isClosed()){
init();
logger.warn("DataSource is closed. Rebuild BasicDataSource from getCnn");
}
logger.trace("Request for connection");
cnn = ds.getConnection();
// Monitor current connecton pool
// change to logger.trace in future for performance.
logger.warn("Current Connection Pool: "
+ "\n MaxTotal of connection - " + String.valueOf(maxTotal)
+ "\n Number of active connection - " + String.valueOf(ds.getNumActive())
+ "\n Number of idle connecton - " + String.valueOf(ds.getNumIdle()));
return cnn;
Мои конфигурации BasicDataSource
MinIdle = "8"
MaxIdle = "16"
MaxTotal = "-1"
maxOpenPreparedStatements = "256"
RemoveAbandonedTimeout = "300"
RemoveAbandonedOnBorrow = "true"
И выход - номер незанятого соединения всегда равен 0, и активное соединение продолжает увеличиваться независимо от того, как долго я жду, пока соединение не станет бездействующим.
Итак, в каком состоянии соединение станет «бездействующим»? Я не могу найти никаких настроек тайм-аута, чтобы принудительно перевести соединение в режим ожидания.
Любые идеи будут высоко оценены!