Как остановить или противостоять исключению максимального размера пула тайм-аута? - PullRequest
1 голос
/ 01 мая 2019

Я установил консольное приложение .net core (3.0.0 preview3) и добавил пул контекста db, связанный с моей моделью ef core (2.2.4), и построил поставщика услуг

var serviceProvider = new ServiceCollection()
.AddDbContextPool<CorumClearDispenseContext>(options => options.UseSqlServer("Server=.;Database=*******;Trusted_Connection=True;"))
.BuildServiceProvider();

Затем я зацикливаюсь 10000 раз и делаю запрос к базе данных


IEnumerable<DataLookup> searchData = null;

using (var serviceScope = serviceProvider.CreateScope())
           {
               var myDBContext = serviceScope.ServiceProvider.GetService<MyDBContext>();
               searchData = await myDBContext.DataLookup.Where(p => p.Description.Contains("test")).Skip(0).Take(100).AsNoTracking().ToListAsync();

           }

return searchData ;

, теперь при выполнении этого кода я всегда получаю исключение для максимального размера пула тайм-аута.Для ясности, база данных и консольное приложение находятся на одном компьютере.

Может ли кто-нибудь уточнить, правильно ли я понимаю, когда я говорю, что по умолчанию у меня должен быть размер пула 128 и что мои запросы используют ихвсе, и они не заканчиваются достаточно быстро, чтобы dbcontext мог вернуться в пул к тому моменту, когда будет сделан следующий запрос?

Я также предполагаю, что мой код использования верен, и он освободит ресурс обратно в пулоднажды оставив использование?

Каков наилучший подход для обработки / смягчения этого исключения, есть ли способ регулирования запроса до тех пор, пока в пуле не будет доступно одно из них?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...