Использовать «пул соединений» или нет - PullRequest
0 голосов
/ 12 июня 2018

Фон

Я использую Azure-Sql-Server.Для размещения моей базы данных я использую Entity-Framework (C #) поверх нее.Я использовал Standart S3 уровня.Этот уровень цен ограничен 200 одновременными подключениями к БД.

Моя система работает в архитектуре микро-сервисов.У каждой из моих служб есть открытые соединения с БД.

Вот так выглядит моя строка соединения

metadata = res: ///Model1.csdl | res: ///Model1.ssdl | res: //*/Model1.msl; provider = System.Data.SqlClient; строка подключения поставщика = "Источник данных = mydb.database.windows.net; Первоначальный каталог = production; Persist Security Info = True; ПользовательID = user @ my; Пароль = mypass; Pooling = true; Максимальный размер пула = 2; Enlist = false; "

Мой сценарий

Я также читал в Документация по SQL Server о том, что пул включен по умолчанию, а MaxPoolSize равен 100 (по умолчанию).

Теперь, я удивляюсь, если вообще разумно использовать пул соединений?потому что мое приложение содержит 50 машин в кластере.Даже если я предоставлю подключение X4 на машину, я достигну MaxAllowedConnection с помощью AzureSql (на моем уровне цен S3).

Масштабирование БД не вариант, так как я уже много за это плачуDB.Около 300 грн.Я проверил это и обнаружил, что для того, чтобы получить 400 разрешенных соединений, мне придется заплатить 1200 долларов США за базу данных.Это не вариант.

Мое приложение не агрессивно.Просто сделайте несколько вычислений (ЦП) и вставьте несколько строк.

Вопросы:

  1. Мне действительно нужно использовать Connection Pooling?Как узнать, является ли это избыточным (после изменения)?
  2. Как может быть разумным, чтобы пул соединений включался по умолчанию с таким большим числом MaxConnection (100)?теоретически, это не будет работать, даже если вы заплатите 300USD с 3-мя машинами.
...