Azure 云服务崩溃(SDK 2.0,OS Fam:3)

Posted

技术标签:

【中文标题】Azure 云服务崩溃(SDK 2.0,OS Fam:3)【英文标题】:Azure Cloud Service Crashing (SDK 2.0, OS Fam: 3) 【发布时间】:2014-05-13 02:19:04 【问题描述】:

我们有一个相当大且复杂的 MVC3 项目在 Azure 的 .NET 4.0 中运行。

我们遇到的症状是网站无响应然后崩溃。当我们进入管理门户时,所有实例都处于“已停止”状态。

据我了解,这是 IIS 快速故障保护启动并杀死应用程序池并再次重新启动它的行为。

我使用调试诊断工具为我的云服务中的 IIS 实例捕获内存转储,每次崩溃时,最后的消息是:

[4/2/2014 1:41:52 AM] First chance exception - 0X000006B5 caused by thread with System     
ID: 2856.  DetailID = 3
Script Error
Error Code - 0x800A01CE
Error Source [Microsoft VBScript runtime error]
Error Description [The remote server machine does not exist or is unavailable: 'ServiceState']
Line 104, Column 2

或者

[4/2/2014 12:25:52 AM] First chance exception - 0XE06D7363 caused by thread with System ID: 3292Script Error
Error Code - 0x80070013
Error Source [Unavailable]
Error Description [Unavailable]
Line 1103, Column 4

此外,我得到的异常数量与我的应用程序池中定义的最大失败数量非常相似(如果不相同)。

我尝试过的事情:

在 Azure 模拟器和虚拟机上运行,​​它不会崩溃 升级到 Azure SDK 2.2 并部署到 OS Family 4(当前运行 SDK 2.0,OS Fam:3) 关闭自定义错误 使用 Application_Error() 捕获所有错误

在我看来,似乎有一些异常没有被捕获并且正在使 IIS 工作进程崩溃,一旦它达到 5(我的应用程序池中的最大故障数)它就会崩溃。

如果有人能对此有所了解或提出其他我可以尝试的建议,我将不胜感激。

【问题讨论】:

事件日志中的错误有什么问题吗?您可以在服务上启用 RDP,并在机器上本地查看事件查看器。 是的,我的第一个调用端口之一:进程 D:\Packages\GuestAgent\GuestAgent\WindowsAzureGuestAgent.exe (RD00155D499D33) 代表用户 NT AUTHORITY\SYSTEM 启动了计算机 RD00155D499D33 的关闭以下原因:旧版 API 关闭原因代码:0x80070000 关闭类型:关闭评论: 【参考方案1】:

您遇到的错误 (0x80070013) 通常定义为“媒体被写保护”。 (尽管自定义组件可能会抛出 HResult 以获得完全不同的东西)。您通过收集 DebugDiag 转储采取的方法是正确的,但不是仅在崩溃时进行转储,而是将 DebugDiag 配置为在类型 0XE06D7363 的第一次机会异常时写入转储。当您的应用程序抛出该错误时,这将为您提供转储,然后在 WinDBG 中打开转储并转储调用堆栈应该很简单。

根据您的应用崩溃的频率,您可能还需要运行 procmon 以查看您正在访问的资源可能会抛出“媒体被写保护”。错误。

另请注意,您可以使用AzureTools 将这些不同的调试工具快速安装到 VM 上。

【讨论】:

非常感谢您的帮助。我会试试你的方法。【参考方案2】:

您还可以在启动任务中配置快速故障保护,在 power shell 脚本中使用类似这样的内容

($env:windir + "\system32\inetsrv\appcmd.exe set config /section:system.applicationHost/applicationPools /applicationPoolDefaults.failure.rapidFailProtectionInterval:'00:03:00'  /commit:apphost") | Invoke-Expression

($env:windir + "\system32\inetsrv\appcmd.exe set config /section:system.applicationHost/applicationPools /applicationPoolDefaults.failure.rapidFailProtectionMaxCrashes:'15'  /commit:apphost") | Invoke-Expression

【讨论】:

是的,谢谢,当我阅读有关快速故障保护的信息时,我确实遇到了这个问题。我希望更正我的错误,而不是忽略它们!

以上是关于Azure 云服务崩溃(SDK 2.0,OS Fam:3)的主要内容,如果未能解决你的问题,请参考以下文章

Azure 云服务工作者角色崩溃和不健康

azure sdk2.5 云服务部署不创建 wad-control-container blob

windows azure是操作系统吗,它和Windows Azure SDK是啥关系

Azure 云服务定义问题

落地生根两周年,微软Azure进入2.0时代

如何从用于 vm 的 Azure Python SDK 获取 OS 磁盘相关的详细信息