При использовании JPA / Hibernate вы должны установить DataSource
, который часто является реализацией, использующей пул соединений, чтобы не нужно было воссоздавать соединения все время. Вместо этого будет использовано существующее соединение из пула соединений.
Существует несколько реализаций, доступных и поддерживаемых Spring, таких как HikariCP, DBCP, Tomcat и так далее. По умолчанию Spring boot 1.x использует пул соединений Tomcat, а Spring boot 2.x использует HikariCP .
Вы можете настроить минимальное количество незанятых соединений, установив свойство minimumIdle
. По умолчанию это то же самое, что и maximumPoolSize
, который в свою очередь по умолчанию равен 10. Это означает, что Hikari по умолчанию будет пытаться сохранить 10 соединений, либо незанятых, либо нет.
При загрузке Spring вы можете настроить свойства HikariCP с помощью префикса spring.datasource.hikari.*
, например:
spring.datasource.hikari.minimumIdle=10
spring.datasource.hikari.maximumPoolSize=10
Цитирование соответствующей документации :
Это свойство контролирует минимальное количество незанятых соединений, которые HikariCP пытается поддерживать в пуле. Если число незанятых подключений падает ниже этого значения, а общее количество подключений в пуле меньше maximumPoolSize
, HikariCP приложит все усилия для быстрого и эффективного добавления дополнительных соединений. Тем не менее, для максимальной производительности и реагирования на пиковые требования, мы рекомендуем не устанавливать это значение и вместо этого разрешать HikariCP действовать как пул соединений фиксированного размера. По умолчанию: так же, как maximumPoolSize
Как вы можете видеть, рекомендуется не изменять это поведение, и поэтому вполне нормально, если вы используете HikariCP, чтобы увидеть множество незанятых соединений, если ваши приложения не используются. Однако каждое приложение должно принимать не более 10 соединений, если не настроено иначе. Они также рекомендуют поддерживать максимальный размер пула как можно ниже, как указано в статье О размере пула .
Кроме того, вы можете настроить длительность соединения в режиме ожидания, настроив параметр idleTimeout
.