У меня были следующие свойства в моем приложении Spring Boot 1.4, разговаривающем с локальным MySQL с использованием JDBC:
- spring.datasource.test-while-idle=true
- spring.datasource.test-on-заимствование = правда
- spring.datasource.validation-query=ВЫБЕРИТЕ 1
- spring.datasource.initial-size=50
- весна.источник данных.макс-актив=100
- spring.datasource.max-idle=50
- spring.datasource.min-idle = 50
- spring.datasource.initial-size=50
- spring.datasource.tomcat.max-active=100
- spring.datasource.tomcat.max-idle=50
- spring.datasource.tomcat.min-idle=50
- spring.datasource.tomcat.initial-size=50
Я знаю, что последние четыре строки повторяются, но я сохранил их, чтобы попробовать, сработает ли какая-либо комбинация. В документации Spring Boot говорится, что все свойства tomcat источника данных должны находиться в spring.datasource.tomcat.*. С другой стороны, первые три строки работают на SpringBoot 1.3 и 1.4. Таким образом, ожидалось, что параметры пула соединений также будут работать.
После запуска приложения я проверил все его потоки в VisualVM. Количество составляет ~ 20, что намного меньше, чем 50, которые я установил. После запуска, скажем, 1000 вызовов REST, которые общаются с MySQL с использованием репозиториев Spring Data, я вижу, что количество потоков превышает 50. Однако после завершения вызовов REST и через некоторое время количество потоков снижается до ~ 30. Я вижу, что ~ 10 рабочих потоков остаются бездействующими.
Итак, мой вопрос: как вы обнаружите потоки пула соединений JDBC в пуле потоков приложения Spring Boot?
Кроме того, что не так в конфигурации свойств? Почему пул соединений JDBC с ожидаемым количеством потоков не создается?