【发布时间】:2016-03-24 21:24:19
【问题描述】:
今天出于某种未知原因,仅在大约 10 分钟内,我们的一个 Azure Web 应用程序就与其 Azure SQL 数据库的可用性有关的崩溃。该网络应用程序给出了一个 YSOD,上面写着“等待操作超时”。 Elmah 显示了其他错误,例如“登录失败”和“当前命令发生严重错误。如果有结果,应该丢弃。”
查看应用程序和数据库负载,我真的不明白为什么。数据库设置在 S0 级别,我们将其提高到 S1,但即使这样看起来也很奇怪。数据库上的 DTU 利用率很少超过 50%,而 Web 应用程序的峰值大约是 35 个同时请求。总体而言,它似乎不应该超出 S0 数据库的能力范围。
这很糟糕,是的,但最大的问题是我该如何解决这个问题?这显然是一个数据库问题,但考虑到低负载,我不知道为什么。我当然不想为这种大小的应用升级到每月 300 美元以上的高级级别。
我可以设置日志记录来解决这个问题吗?有什么方法可以回顾发生的事情并就如何防止它再次发生得出明确的结论?
【问题讨论】:
-
我的应用偶尔会发生这种情况。我不明白为什么。我配置了 RetryPolicy,增加默认的 SqlConnetion ConnectionTimeout(在连接字符串中)似乎有点帮助。最终,我认为 MS 不能保证始终建立与数据库的连接,并且您无法阻止它再次发生。
-
奇怪的是,直到 3/17 左右,该应用程序一直在运行,几乎没有问题,此时我开始每天出现数十次反复出现但间歇性的问题。
-
另外有趣的是,在某些浏览器上,该问题将继续出现,直到该站点的 cookie 被清除。这听起来可能与 ServiceStack 以及它如何处理缓存有关。
-
可能与实例亲和力有关吗? azure.microsoft.com/en-gb/blog/… 我在我的应用程序上关闭了实例关联,它大大减少了错误计数。
标签: azure azure-web-app-service azure-sql-database