Spring-Boot - довольно отличный инструмент, но документация немного скудна, когда дело касается более сложной конфигурации. Как я могу установить такие свойства, как максимальный размер для моего пула соединений с базой данных?
Spring-Boot поддерживает tomcat-jdbc
, HikariCP
и Commons DBCP
все ли они изначально настроены одинаково?
-Dspring.datasource.tomcat.initial-size=10
(по умолчанию 10)Ответы:
Оказывается, установить эти свойства конфигурации довольно просто, но официальная документация носит более общий характер, поэтому ее может быть трудно найти при поиске конкретной информации о конфигурации пула соединений.
Чтобы установить максимальный размер пула для tomcat-jdbc, установите это свойство в файле .properties или .yml:
spring.datasource.maxActive=5
Вы также можете использовать следующее, если хотите:
spring.datasource.max-active=5
Таким образом вы можете установить любое свойство пула соединений. Вот полный список свойств, поддерживаемых
tomcat-jdbc
.Чтобы понять, как это работает в целом, вам нужно немного покопаться в коде Spring-Boot.
Spring-Boot создает DataSource следующим образом ( см. Здесь , строка 102):
@ConfigurationProperties(prefix = DataSourceAutoConfiguration.CONFIGURATION_PREFIX) @Bean public DataSource dataSource() { DataSourceBuilder factory = DataSourceBuilder .create(this.properties.getClassLoader()) .driverClassName(this.properties.getDriverClassName()) .url(this.properties.getUrl()) .username(this.properties.getUsername()) .password(this.properties.getPassword()); return factory.build(); }
DataSourceBuilder отвечает за определение того, какую библиотеку объединения использовать, путем проверки каждого из ряда известных классов в пути к классам. Затем он создает DataSource и возвращает его
dataSource()
функции.На этом этапе начинается использование магии
@ConfigurationProperties
. Эта аннотация сообщает Spring искать свойства с префиксомCONFIGURATION_PREFIX
(который естьspring.datasource
). Для каждого свойства, которое начинается с этого префикса, Spring попытается вызвать установщик в DataSource с этим свойством.Tomcat DataSource - это расширение DataSourceProxy , в котором есть метод
setMaxActive()
.И вот как
spring.datasource.maxActive=5
правильно применяется ваше !А как насчет других пулов подключений
Я не пробовал, но если вы используете один из других пулов соединений, поддерживаемых Spring-Boot (в настоящее время HikariCP или Commons DBCP), вы сможете установить свойства таким же образом, но вам нужно будет посмотреть на проект документация, чтобы знать, что доступно.
источник
spring.datasource.tomcat.max-active
илиspring.datasource.hikari.maximum-pool-size
.spring.datasource.maxActive=1
сработало. Эта линияspring.datasource.max-active=1
у меня не сработала. Версия Spring Boot2.2.2.RELEASE
В текущей версии Spring-Boot (1.4.1.RELEASE) каждая реализация пула источников данных имеет собственный префикс для свойств.
Например, если вы используете tomcat-jdbc:
spring.datasource.tomcat.max-wait=10000
Вы можете найти объяснение здесь
spring.datasource.max-wait=10000
это больше не действует.
источник
В весенней загрузке 2.x вам нужно ссылаться на свойства конкретного поставщика.
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connect-to-production-database
По умолчанию hikari можно установить с помощью
spring.datasource.hikari.maximum-pool-size
.источник
Разные пулы подключений имеют разные конфигурации.
Например, Tomcat (по умолчанию) ожидает:
и HikariCP будет доволен:
Мы можем удовлетворить и то, и другое без стандартной конфигурации:
Нет свойства для определения поставщика пула соединений.
Взгляните на исходный DataSourceBuilder.java
... Итак, мы можем легко заменить поставщика пула соединений, используя эту конфигурацию maven (pom.xml):
источник
В зависимости от типа / размера / нагрузки / количества вашего приложения. пользователей .. и т. д. - вы можете продолжать следить за своими производственными свойствами
spring.datasource.tomcat.initial-size=50 spring.datasource.tomcat.max-wait=20000 spring.datasource.tomcat.max-active=300 spring.datasource.tomcat.max-idle=150 spring.datasource.tomcat.min-idle=8 spring.datasource.tomcat.default-auto-commit=true
источник
spring.datasource.tomcat.max-active=5
spring.datasource.tomcat.max-idle=5
Мне хватило добавления , спасибо!