EF核心请求无法唤醒Azure Sql(无服务器SKU)数据库并超时

bao*_*uss 0 entity-framework-core azure-sql-database

我将 EF Core 与我的一个应用程序一起使用来查询 Azure Sql 数据库。它是无服务器 SKU,在 1 小时不活动后缩减至零(进入睡眠状态)。

现在,在该应用程序中,有预定的功能可以在某些时间点查询数据库。这通常是在数据库休眠的时候。为了弥补这一点,我在 DbContext.cs 中使用以下内容

optionsBuilder.UseSqlServer(connection, opt => opt.EnableRetryOnFailure(
    maxRetryCount: 20,
    maxRetryDelay: TimeSpan.FromSeconds(30),
    errorNumbersToAdd: null
));
Run Code Online (Sandbox Code Playgroud)

如果延迟均匀分布,则平均为 15 秒,重试 20 次 => 5 分钟后超时。

我认为这应该足够了,因为当使用 SSMS 查询睡眠数据库时,通常需要不到 1 分钟才能开始。然而,事实并非如此,函数经常超时并且查询失败。

有没有比增加超时更好的方法来解决这个问题?5分钟真的不够吗?

干杯

bao*_*uss 7

我想我现在已经开始工作了。上述来自 EF core 的代码片段与任何发生的情况都相关command timeout。然而,由于数据库在请求期间处于休眠状态,这是一个相当大的connection timeout问题。我通过添加Connect Timeout=120连接字符串本身解决了这个问题。