如何确定Azure App Service中100%CPU使用率的原因?


12

我在Azure应用程序服务计划中有五个应用程序,同一应用程序的所有不同副本适用于不同的客户端。这是带有SQL数据库的ASP.NET MVC应用程序。

今天早上,我醒来了一些缓慢且无响应的网站,有时会导致503错误。在检查App Service Plan的CPU /内存指标后,我发现CPU固定为100%:

CPU 100%

各个站点的CPU时间图表显示它们全部同时关闭,尽管有些情况比其他情况差:

单个站点的CPU使用率

我尝试通过执行“高级应用程序重新启动”来解决此问题,但刀片无法加载-我认为是因为它试图从无法响应的服务器获取信息。

最后,我尝试逐个停止每个站点,这使CPU恢复为零,然后再次将其重新启动,这似乎已经解决了问题,但是现在其中一些已经开始恢复。

几周前,我遇到了类似的问题,并认为我的App Plan太大了,所以从S1升级到S2,直到今天还不错。

我对如何弄清楚造成CPU饥饿行为的原因一无所知。谁能指出我正确诊断该病的正确方向?


这似乎是在Azure应用服务计划上发生的,您是否已联系MS?-除非您进行任何更改,否则我会让他们知道平台存在问题。
Sum1sAdmin

我没有与他们的支持计划,所以不要以任何方式让他们知道。如果我只是随机遇到100%CPU问题,那就有点担心了-可能不得不寻找其他供应商。您认为有两个实例对您有帮助吗?
littlecharva '16

我会使用诸如technet之类的开放式论坛-如果非常重要,则可以扩大规模,但如果是这样,我不会为他们需要修复的内容支付更多费用。
Sum1sAdmin

Answers:


6

我们已经遇到过几次这个问题,每次都证明它是被GC(垃圾收集)所取代。很难证明和诊断,但是我最后要做的是使用kudo(scm)网站,单击工具=>支持(可将您带到应用程序的支持网站。

从这里选择目录(如果有多个目录)和站点,单击Analyze => Metrics,然后单击Diagnose按钮(注意,此按钮已更改,因此这些步骤可以随时更改),然后返回Analyze => Dianotics,您最终将获得“内存转储=>“分析状态”报告。这应该是一个mht文件(您可以在讨厌的浏览器IE或Edge中打开该文件),然后搜索键“ gc”。

您会发现一些有趣的调用堆栈框架,其中引用了诸如“ GCFrame”之类的内容,或者更有趣的是对“ System.Threading.WaitHandle.WaitMultiple”的调用,如果您获取的过多,则说明系统可能存在垃圾回收问题。

如何解决这个问题……这是许多其他主题中涉及的主题,因为这就像问“我如何生活在仍在使用IE 6的世界中?”……


1
这已经感动了。它现在位于“诊断和解决问题->诊断工具->收集内存转储”中的应用程序服务(不是scm站点,不是常规的Azure站点)中
Josh Noe

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.