Задумывание о размере пула соединений с базой данных - PullRequest
15 голосов
/ 06 января 2012

Я работаю над Java-приложением с открытым исходным кодом, т.е. xwiki.Insie hibernate.cfg.xml я могу видеть значение параметров connection.pool_size и Statement_cache.siz как 2 (для каждого).Мое приложение будет иметь максимальную загрузку 100 пользователей в определенный момент времени.Теперь мой вопрос, какой должен быть идеальный размер пула соединений для этого.Для меня размер 2 выглядит очень меньше.Если 100 пользователей подключаются одновременно, 98 пользователей должны ждать, пока соединение освободится?Должен ли я сохранить размер пула соединений как 100 в моем случае?

Я использую Microsoft SQL Server.

Помимо этого есть ограничение на максимальный размер пула соединений.Зависит ли это от веб-сервера (tomcat в моем случае) или поставщика хранилища данных (ms sql server)?

Ответы [ 4 ]

8 голосов
/ 08 мая 2014

Определение размера пула соединений не является простой задачей. Вам в основном нужно:

  • метрики для исследования использования соединения
  • механизмы аварийного переключения при отсутствии доступного соединения

FlexyPool призван помочь вам определить правильный размер пула соединений.

Вы можете проверить следующие статьи:

7 голосов
/ 06 января 2012

Если обычный запрос тратит 50% своего времени на вычисления и 50% на подключение к базе данных, вам может потребоваться только 50 подключений в вашем пуле. Конечно, ваше приложение должно освободить соединение с БД как можно раньше.

В целом, удержание соединения не дорого для базы данных (в то время как создание нового довольно дорого). Не должно быть проблем с поддержанием размера достаточно высоким.

Вы можете установить

  • максимальный размер пула до 100
  • предпочтительный размер пула до 50
  • и время простоя до 5 минут для соединений в пуле.

Я не знаком с Microsoft SQL Server, но я думаю, что Максимальный лимит пула составляет 100

Tomcat будет в порядке с этим количеством пула.

2 голосов
/ 23 августа 2017

Помните, что пул может стоить памяти ни за что, если он не используется.Конфигурация пула сильно зависит от того, где находится ваше узкое место:

ЦП, память, диск, сеть, сложные запросы к базе данных, высокий уровень параллелизма, ... многие из них?

Размер пула по умолчанию часто5 до 10. Сначала убедитесь, что у вас есть проблемы с базой данных.Попробуйте крайние значения, такие как 2 или 30, при искусственной нагрузке и посмотрите, как она себя ведет.Я думаю, что ссылки, предоставленные @ vlad-mihalcea, довольно интересные.

2 голосов
/ 06 января 2012

Вы должны оценить требования к параллелизму приложения, время работы базы данных, а также количество соединений, которые может поддерживать сервер (или база данных DB).

То есть 100 пользователей не означают, что вам нужен пул соединенийс размером 100.

...