Asp.net AJAX请求时Azure SQL中的间歇性连接超时

Asp.net AJAX请求时Azure SQL中的间歇性连接超时,asp.net,sql-server,azure,azure-sql-database,Asp.net,Sql Server,Azure,Azure Sql Database,我一直在寻找这个在AJAX调用Azure ASP.NET网站时间歇性出现的错误,今天我终于在我们的日志中发现了它。我怀疑锁阻止了该操作,但它似乎无法尝试连接到Azure SQL数据库 以下是异常消息: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. This failure occurred while attemp

我一直在寻找这个在AJAX调用Azure ASP.NET网站时间歇性出现的错误,今天我终于在我们的日志中发现了它。我怀疑锁阻止了该操作,但它似乎无法尝试连接到Azure SQL数据库

以下是异常消息:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 
This failure occurred while attempting to connect to the routing destination.
The duration spent while attempting to connect to the original server was -
[Pre-Login] initialization=28; handshake=43; [Login] initialization=0; authentication=0; [Post-Login] complete=2;  
这是我正在使用的连接字符串:

Server=tcp:<server>,1433;Database=<database>;User ID=<user>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30
Server=tcp:,1433;数据库=;用户ID=;密码=;可信连接=False;加密=真;连接超时=30
网站和Azure SQL数据库都位于同一区域。数据库的规模是标准的S0,Azure网站是标准的小型实例


你们中有人遇到过这个问题吗?

听起来问题出在从客户端到Internet的连接上。如果您是在客户端JavaScript中进行Ajax调用,那么web应用程序和数据库是否位于同一区域并不重要(至少就性能而言)。非常慢的连接将调用超时


由于这是间歇性的,我建议在JavaScript中捕获此错误,并允许提示客户端重试保存

这种情况是间歇发生还是持续发生?您的代码中是否内置了瞬时故障处理和重试逻辑?阅读建议和最佳实践。@Shantanu感谢您的建议。我认为使用瞬态故障处理是正确的解决方案,但对于我试图解决的问题可能不是这样。该应用程序是用户通过电话向个人提出的一系列问题,然后记录他们的答案。如果这需要5秒以上,则会给用户带来问题。我将数据库升级到标准S2,这似乎解决了超时问题。你认为你的应用程序有什么样的负载?有多少并发用户?我有完全相同的问题,因为NHibernate和
NHibernate.SqlAzure
对于暂时性错误重试,我似乎无法确定源。我们的负载目前非常低(使用的DTU<2%),因此这不是负载问题…当我尝试填充数据适配器调用时,我在Azure上面临同样的问题。异常消息为“EX.message Timeout expired(消息超时已过期)。操作完成前超时时间已过,或者服务器未响应。尝试连接到路由目标时发生此故障。尝试连接到原始服务器时所用的持续时间为-[预登录]初始化=7;握手=50;[Login]初始化=0;身份验证=0;[Post Login]完成=6;;而InnerException为{“等待操作超时”}。我经常遇到此错误。失败的连接是web服务器(例如Azure web App)和数据库服务器(Azure SQL)之间的连接。我相信我的问题是我在Azure SQL中使用的实例大小,它是S0(我在上面添加了一条注释@AKS)。谢谢你的建议!我应该在解决我的问题后发布我的决议。