1

自 18 个月以来,我在 Azure + SQL Azure 上托管了一个非常稳定的应用程序。

从星期一开始,我在 SQL Azure 中随机出现长时间的死锁,这只会阻止数据库中的任何更新数小时。

然后就过去了。然后它回来了。

这与实例无关,因为网站的“阅读”部分是可以的。

  • 我确实在每个读者请求上使用 WITH (NOLOCK),因为在我的情况下我的一致性并不重要。所以 azure 中的 datareader 确实有效,但每次更新都会引发 SQL 超时连接。

  • 我确实在 Windows Azure SQL 中使用重试逻辑来处理暂时性故障。

  • 一个集中的数据库服务于几个网站,每天的访问量约为 25,000 次,自 18 个月以来我从未遇到过问题,当前的流量与上周一切正常时相比没有增加。

我不知道会发生什么。我第一次发现自己被困在云端,没有具体的方法来控制任何事情。

也许是攻击。那么如何在 Azure 中检测到呢?有没有办法在 Azure 实例上查看传入的 HTTP 请求?

4

4 回答 4

1

虽然分析请求是一个起点,但另一个起点是准确了解数据库中正在发生的事情。这就是你要解决问题的地方,对吧?如果您能找到恶意查询,那么您应该可以更好地追踪源头。不幸的是,Windows Azure SQL 数据库没有为您提供 SQL Server 可用的完整选项(例如分析),但有一些帮助。查看系统视图sys.dm_exec_query_statssys.dm_tran_active_transactions可能是开始的好地方。浏览每一个视图,准确理解每个都显示什么。这将使您比现在更好地了解数据库中正在发生的事情,无论您的具体问题如何,这都是很好的信息。

如果您可以进行重新部署,请绝对尝试Newrelic,它是一个代理,它可以将自己作为分析器连接到您的应用程序,并提供大量有用信息。如果您遇到严重问题,即使您只是在解决问题时注册试用期也是值得的。请注意,Newrelic 开始工作有点繁琐,并且似乎不支持 Azure 上的 .NET 4.5 目标平台。

于 2013-03-13T21:12:18.607 回答
0

快速谷歌搜索一下,您应该可以找到描述如何从 Azure 导出 IIS 日志的文章。然后您就可以解析它们,就像您在本地运行 IIS 一样。

但是,如果您遇到这些问题并且它们在您没有进行更改的情况下突然开始,您可能希望直接联系 Microsoft 支持。

于 2013-03-13T20:15:21.243 回答
0

您可以查看管理门户中的 CPU 活动,尽管它可能允许您收集一些信息。您的网络角色是否正在收集服务器日志?如果是这样,您可以使用像Cerebrata 诊断管理器这样的工具来可视化日志文件。

于 2013-03-13T20:47:14.237 回答
0

如果您不介意使用第三方服务和产品,并且需要主动监控当前请求/秒或 SQL Azure 数据库上的负载(主动查询、阻塞查询、打开连接等) - 请查看 AzureWatch @ http: //www.paraleap.com - 这是一项专门用于 Azure 的监控服务,会在几秒钟内提醒您您的角色或 SQL Azure 数据库出现任何问题。

于 2013-03-13T21:13:51.400 回答