Фон
Я использую 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 долларов США за базу данных.Это не вариант.
Мое приложение не агрессивно.Просто сделайте несколько вычислений (ЦП) и вставьте несколько строк.
Вопросы:
- Мне действительно нужно использовать Connection Pooling?Как узнать, является ли это избыточным (после изменения)?
- Как может быть разумным, чтобы пул соединений включался по умолчанию с таким большим числом MaxConnection (100)?теоретически, это не будет работать, даже если вы заплатите 300USD с 3-мя машинами.