Какой интервал для проверки свободного объекта в Apache Commons Pool 2
Я использую Apache Commons Pool 2
Я установил конфигурацию testWhileIdle
Значение true, что означает, что инфраструктура пула будет проверять, являются ли незанятые объекты допустимыми.
Я хотел бы спросить, происходит ли эта проверка периодически, если да, какой интервал по умолчанию, и как я могу изменить его.
Я спрашиваю об этом, потому что объекты в пуле должны периодически подключаться к серверу, чтобы поддерживать работу, и я думаю, что пул validateObject
Метод является хорошим местом для выполнения этого.
В комментариях @user7294900 есть два параметра конфигурации:
timeBetweenEvictionRunsMillis
значение по умолчанию -1minEvictableIdleTimeMillis
значение по умолчанию 1800*60*30
У меня есть следующие два вопроса:
- В чем разница между этими двумя параметрами?
- Я установил их обоих на 5000, и у меня есть 8 объектов в пуле, я печатаю хеш-код объекта в моем PooledObjectFactory's
validateObject
метод, я обнаружил, что хеш-код только 3 объекта был распечатан, то нет больше сообщений, напечатанных снова, выглядитvalidateObject
не вызывается каждые 5 секунд или вызовvalidateObject
застрял?
Я разобрался с проблемой, пожалуйста, смотрите комментарии
1 ответ
Вы можете использовать \ обновить timeBetweenEvictionRunsMillis
для изменения времени проверки простоя см. Пул соединений Tomcat JDBC.
timeBetweenEvictionRunsMillis (int) Число миллисекунд, оставшихся до состояния ожидания между запусками потока проверки / очистки неактивного соединения. Это значение не должно быть меньше 1 секунды. Он диктует, как часто мы проверяем наличие свободных, заброшенных соединений и как часто мы проверяем свободные соединения. Значение по умолчанию составляет 5000 (5 секунд).