Какой интервал для проверки свободного объекта в Apache Commons Pool 2

Я использую Apache Commons Pool 2Я установил конфигурацию testWhileIdle Значение true, что означает, что инфраструктура пула будет проверять, являются ли незанятые объекты допустимыми.

Я хотел бы спросить, происходит ли эта проверка периодически, если да, какой интервал по умолчанию, и как я могу изменить его.

Я спрашиваю об этом, потому что объекты в пуле должны периодически подключаться к серверу, чтобы поддерживать работу, и я думаю, что пул validateObject Метод является хорошим местом для выполнения этого.

В комментариях @user7294900 есть два параметра конфигурации:

  1. timeBetweenEvictionRunsMillisзначение по умолчанию -1
  2. minEvictableIdleTimeMillisзначение по умолчанию 1800*60*30

У меня есть следующие два вопроса:

  1. В чем разница между этими двумя параметрами?
  2. Я установил их обоих на 5000, и у меня есть 8 объектов в пуле, я печатаю хеш-код объекта в моем PooledObjectFactory's validateObject метод, я обнаружил, что хеш-код только 3 объекта был распечатан, то нет больше сообщений, напечатанных снова, выглядит validateObject не вызывается каждые 5 секунд или вызов validateObject застрял?

Я разобрался с проблемой, пожалуйста, смотрите комментарии

1 ответ

Решение

Вы можете использовать \ обновить timeBetweenEvictionRunsMillis для изменения времени проверки простоя см. Пул соединений Tomcat JDBC.

timeBetweenEvictionRunsMillis (int) Число миллисекунд, оставшихся до состояния ожидания между запусками потока проверки / очистки неактивного соединения. Это значение не должно быть меньше 1 секунды. Он диктует, как часто мы проверяем наличие свободных, заброшенных соединений и как часто мы проверяем свободные соединения. Значение по умолчанию составляет 5000 (5 секунд).

Другие вопросы по тегам