2016-09-21 5 views
0

Я был следующие свойства в моем Spring Загрузочный 1.4 приложения говорить с местным MySQL с использованием JDBC -Как найти потоки пула соединений JDBC, созданные в приложении SpringBoot?

  • spring.datasource.test-то время-ожидания = истинный
  • spring.datasource.test-на-заема = истинная
  • spring.datasource.validation-запрос = 1 ВЫБОР
  • spring.datasource.initial размер = 50
  • spring.datasource.max-активные = 100
  • spring.datasource.max-простаивает = 50
  • spring.datasource.min-простаивает = 50
  • spring.datasource.initial размер = 50
  • spring.datasource.tomcat.max-активные = 100
  • spring.datasource.tomcat.max-простаивает = 50
  • spring.datasource.tomcat.min-простаивает = 50
  • spring.datasource.tomcat.initial размера = 50

Я знаю, что последние четыре строки повторы, но я сохранил тех попробуйте, если какая-либо комбинация работает. Документация Spring Boot говорит, что все свойства datasource 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 ожидаемого количества потоков не создается?

ответ

1

Пул соединений не создает потоки (или: он может создать 1 или 2 для домашнего хозяйства, но это он). Пул соединений создает (и отслеживает) подключения JDBC к базе данных для раздачи, когда ваше приложение запрашивает ее. Не нужно иметь нить за соединение в самом пуле.

Большинство тем, которые вы видите, либо из самой Java (например, сбор мусора, и т. Д.), Либо потоков, необходимых для обработки HTTP-соединений (которые могут увеличиваться при загрузке и уменьшении при простоя) и любых других потоков, код.

+0

Спасибо! Я видел только поток Tomcat JDBC Pool Cleaner, поэтому сомневался в создании потока или отдельного потока. – Martin

Смежные вопросы