Закрытие неактивных сеансов с использованием BasicDataSource - PullRequest
3 голосов
/ 07 июня 2011

В нашей базе данных разработки, Oracle 11g R2, мы заметили, что соединения, открытые через наше приложение Java, использующее BasicDataSource, остаются открытыми бесконечно долго.В идеале мы хотели бы, чтобы каждый экземпляр приложения имел до 5 одновременных сеансов базы данных, однако, если сеанс неактивен в течение более 60 секунд, сеанс должен быть закрыт, чтобы уменьшить влияние памяти на базу данных.

ИспользованиеВ следующем коде для настройки нашего BasicDataSource я могу заметить, что мы остаемся в пределах 5-дневного потолка сеансов, но, похоже, мы никогда не очищаем неактивные сеансы:

BasicDataSource ds = new BasicDataSource();
ds.setUrl(getUrlAsString());
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");        
ds.setUsername(getClientOracleUserAsString());              
ds.setPassword(getClientOraclePasswordAsString());
ds.setMinIdle(0);
ds.setMaxIdle(5);
ds.setMinEvictableIdleTimeMillis(60000);

1 Ответ

0 голосов
/ 12 июля 2011

Попробуйте установить следующее:

//Sets the number of connections tested during the eviction process*
numTestsPerEvictionRun=5

//Sets whether idle object evictor will validate connections*
setTestWhileIdle=true

//Sets the validation query to run to validate a connection*
setValidationQuery=SELECT 1

Возможно также, что вы не закрываете соединения должным образом на прикладном уровне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...