突然在SQL Azure上获得大量等待操作超时问题
两天前,没有代码更改或更改数据库,我没有得到很多(每5分钟左右)错误与The wait operation timed out
错误有两个不同的下划线完整错误关于预登录和关于post的其他内容:
System.Data.Entity.Core.EntityException:基础提供程序在Open上失败。 —> System.Data.SqlClient.SqlException:连接超时已过期。 尝试使用登录前握手确认时超时时间已过。 这可能是因为登录前握手失败或服务器无法及时响应。 尝试连接到此服务器所花费的时间是 – [Pre-Login] initialization = 21; 握手= 14988; —> System.ComponentModel.Win32Exception:等待操作超时
System.Data.Entity.Core.EntityException:基础提供程序在Open上失败。 —> System.Data.SqlClient.SqlException:连接超时已过期。 在登录后阶段过去了超时时间。 在等待服务器完成登录过程并响应时,连接可能已超时; 或者在尝试创建多个活动连接时可能会超时。 尝试连接到路由目标时发生此故障。 尝试连接到原始服务器时花费的持续时间是 – [Pre-Login] initialization = 5; 握手= 3098; [登录]初始化= 0; 认证= 0; [登录后]完成= 7; 尝试连接到此服务器所花费的时间是 – [Pre-Login] initialization = 20; 握手= 5; [登录]初始化= 0; 认证= 0; [登录后]完成= 11003; —> System.ComponentModel.Win32Exception:等待操作超时
我正在使用Entity Framework,我的网站托管在Azure Web App上。 我已经做了一些挖掘,我发现的大多数SO问题与entity framework无关,但ADO.Net我找到的几篇post让我更新了从DB的基本到标准(S0)服务并创建了一个GlobalDBConfig
public class GlobalDBConfig : DbConfiguration { public GlobalDBConfig() { SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy(2, TimeSpan.FromSeconds(30))); } }
我怎样才能弄清楚还有什么问题并修复它? 这是一个非常简单的数据库,具有简单的查询和非常少的站点流量(每天少于1000次访问)
我们通过切换到“包含用户”来解决此问题以及SQL Azure上的其他类型的随机超时。 在SQL Azure上使用服务器级别登录可能会导致问题:
这在SQL DB master中效率不高,用户可以在两台不同的计算机上坐在两个不同的SQL服务器上。 此外,当服务器具有多个用户数据库时,master将成为登录过程中的瓶颈,并且在加载时这可能导致登录的高响应时间。 如果Microsoft正在更新机器/服务器上的软件,那么master将在几秒钟内不可用,并且此时对用户数据库的所有登录也会失败( http://www.sqlindepth.com/contained-users-in -sql-azure-db-v12 / )
在你的情况下,我有疑虑,因为我的数据库没有负载很重,但切换到包含用户无论如何都产生了巨大的差异。
用于创建这些用户的SQL如下所示(在数据库本身上运行此操作,而不是像创建服务器级别登录时那样在master数据库上运行):
Create user ContainedUser with password = 'Password' ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [ContainedUser] ALTER ROLE [db_owner] ADD MEMBER [ContainedUser]
以下是一些可供尝试的选项:强烈建议尽可能使用(1)和(3)
- 用户数据库防火墙规则和包含的用户validation
- 将连接超时增加到一个很大的值(60-120秒?)
- 如果可能,请将客户端驱动程序更新到最新版本(7.4及更高版本
我们遇到了类似的问题,请注意,在Azure上的独立数据库中没有AUTO缩放function,因为您使用的是Entity Framework,下面是一些建议
-
如果要调用Web-API以在Azure SQL上获取数据库并与之进行交易,请确保在Azure门户上为Web-API设置“ALLWAYS ON”选项。
-
然后,如果第一次尝试连接失败,您的客户端应用程序应该重试。
-
如果由于数据量导致数据库查询导致超时并且索引无法赶上,那么您需要稍微增加命令执行的时间,最重要的是,您需要更新统计信息数据库并重新编译数据库中的所有对象。
- 无法将REST API用于Windows Server 1.1的Service Bus(OnPremises)
- 在ASP.NET Core 2.0中从另一个(无用户交互)授权一个应用程序服务
- 在Windows phone Silverlight 8.1上接收WNS推送通知
- Azure网络应用程序突然不再支持文化
- 如何在Azure中执行区分大小写的LINQ查询?
- 编译的Azurefunction监控:“无可用数据”
- 当前请求是通过使用Azure部署的SSL进行的
- Azure Fluent API创建SQL Server时出错 – 缺少x-ms-request-id标头
- SQL Azure自动地理复制是否会自动进行故障转移?