Соединения Hikari и активные рабочие места AS400

Я использую менеджер пулов соединений Hikari для запроса некоторых таблиц на компьютере с AS400.

Я установил минимум 1 пул соединений и максимум 10. Я запрашиваю 5 таблиц одновременно.

Проблема заключается в том, что, несмотря на использование метода getConnection() HikariDataSource перед запросом и использование метода Connection close() после каждого запроса, при переходе к WRKACTJOB я вижу 10 активных заданий, предположительно по одному на соединение, пока не будет достигнуто максимальное количество подключений к пулу соединений.

Как мне очистить неиспользуемые соединения \ задания?

Спасибо

2 ответа

Решение

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

Если ваши рабочие нагрузки "spikey" с длительными периодами отсутствия активности, но случайными периодами большого количества активности, я бы предложил установить idleTimeout, например, 1 минуту (60000 мс). Если вы также установите для параметра MinimumIdle значение 0, то после завершения периодической рабочей нагрузки все соединения будут закрыты в течение приблизительно одной минуты.

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

Я понимаю. Не используйте пул соединений. По замыслу, пул соединений будет держать пул открытым (и доступным) Connection (Ы). Для поведения, которое вы хотите, используйте обычный источник данных без пула.

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