我们有一个相当大且复杂的 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 并部署到操作系统系列 4(当前运行 SDK 2.0,操作系统系列:3)
- 关闭自定义错误
- 使用 Application_Error() 捕获所有错误
对我来说,似乎有一些异常没有被捕获,导致 IIS 工作进程崩溃,一旦达到 5(我的应用程序池中的最大失败数),它就会崩溃。
如果有人可以阐明这一点或建议我可以尝试的其他方法,我将不胜感激。
最佳答案
您还可以在启动任务中配置快速失败保护,在 powershell 脚本中使用类似的内容
($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
关于.net - Azure 云服务崩溃(SDK 2.0、OS Fam : 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800615/