我们在 Azure 的 .NET 4.0 中运行了一个相当大且复杂的 MVC3 项目。
我们遇到的症状是网站变得无响应然后崩溃。当我们进入管理门户时,所有实例都处于“已停止”状态。
据我了解,这是 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 模拟器和 VM 上运行,它不会崩溃
- 升级到 Azure SDK 2.2 并部署到 OS Family 4(当前运行 SDK 2.0,OS Fam:3)
- 关闭自定义错误
- 使用 Application_Error() 捕获所有错误
对我来说,似乎有一些异常没有被捕获并且正在使 IIS 工作进程崩溃,一旦它达到 5(我的应用程序池中的最大故障)它就会崩溃。
如果有人能对此有所了解或提出其他我可以尝试的建议,我将不胜感激。