Может ли одно приложение украсть соединение БД у другого? - PullRequest
0 голосов
/ 03 ноября 2019

У меня два загрузочных приложения Spring, развернутых на wildfy. В каждом приложении используется hikaricp, с максимальным размером пула 20. При высокой нагрузке я вижу, что мое первое приложение использует все соединения из пула (активных счетчиков 20), второе приложение использует только 4 (активных счетчиков 4), но когда второе приложение пытаетсяПри получении соединения возникло исключение: соединение недоступно, время запроса истекло после 30000 мс. Возможно ли, чтобы второе приложение попыталось установить соединение с первым приложением cp?!

1 Ответ

1 голос
/ 03 ноября 2019

Я рассмотрю два случая и поделюсь тем, что знаю:

  1. Оба приложения на одном сервере приложений (Wildfly)

Если у вас есть общее определение пула соединенийтогда на сервере приложений оба приложения совместно используют пул соединений.

Примечание. Хотя мне кажется, что это не так, поскольку я не уверен в вашей архитектуре развертывания. Итак, давайте посмотрим на следующую возможность.

Каждое приложение в изолированном пуле подключений (на отдельных серверах)

Одно приложение не может получить доступ или быть ограничено пулом подключений другого приложения.

Что может произойти, если вы 'исчерпаны физические соединения с базой данных - пул соединений на уровне приложений открывает физические соединения с базой данных. Оба пула соединений вашего приложения делают это. Каждая система баз данных имеет конфигурацию, которая устанавливает максимальные (физические) ограничения на соединения - сколько физических соединений могут устанавливать клиенты к базе данных за один раз.

Например, в MySQL вы можете найти и изменить max_connectionsпараметр конфигурации, как показано здесь .

Некоторую информацию о физических и логических соединениях можно найти здесь .

...