Почему HikariCP не рекомендует устанавливать «minimalIdle», зная, что при этом «idleTimeout» не будет работать? - PullRequest
0 голосов
/ 27 марта 2019

Если мы посмотрим на руководство по настройке HikariCP, то увидим, что они не рекомендуют устанавливать значение для свойства minimumIdle.

MinimumIdle
[...] Тем не менее, для максимальной производительности и реагирования на пиковые требования, мы рекомендуем не устанавливать это значение и вместо этого разрешать HikariCP действовать как пул соединений фиксированного размера. По умолчанию: то же, что и maximumPoolSize.

Но проблема в том, что если мы не установим значение для minimumIdle, оно будет установлено по умолчанию на то же самоезначение равно maximumPoolSize, и в результате свойство idleTimeout не будет работать, как мы увидим ниже, почему:

idleTimeout
Это свойство контролирует максимальную суммувремени, в течение которого соединению разрешено сидеть в пуле без дела. Этот параметр применяется только в том случае, если minimumIdle меньше, чем maximumPoolSize [...]

Так что, в основном, я доверял HikariCPконфигурации и пусть свойство minimumIdle будет таким же, как maximumPoolSize, но теперь я вижу кучу незанятых соединений в моей базе данных PostgreSQL (с помощью select * from pg_stat_activity), которые не закрываются, потому что я предполагаю, что свойство idleTimeoutне работает, и я получаю смелое неприятное исключение:

SEVERE [HikariPool-1 connection adder] org.postgresql.Driver.connect Connection error:
org.postgresql.util.PSQLException: FATAL: connection limit exceeded for non-superusers

Так почему HikariCP рекомендует это?

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