Я использую EF Core с одним из моих приложений для запроса базы данных Azure Sql. Это бессерверный номер SKU, который масштабируется до нуля (переходит в спящий режим) после 1 часа бездействия.
Теперь в этом приложении есть запланированная функция для запроса базы данных в определенные моменты времени. Часто это происходит в то время, когда БД спит. Чтобы компенсировать это, я использую в DbContext.cs следующее:
optionsBuilder.UseSqlServer(connection, opt => opt.EnableRetryOnFailure(
maxRetryCount: 20,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null
));
. Если задержка распределена равномерно, получается среднее значение 15 с, с 20 повторными попытками => таймаут через 5 минут.
Я подумал, что этого должно быть достаточно, поскольку при запросе к спящей базе данных с помощью SSMS обычно требуется менее 1 минуты, чтобы начать работу. Однако это не так, функции регулярно выходят из строя, и запросы не выполняются.
Есть ли лучший способ справиться с этим, чем просто еще большее увеличение времени ожидания? Неужели 5 минут действительно недостаточно?
Ура