两个服务器每3-4小时崩溃,并发生以下事件查看器记录的错误:
Faulting application name: w3wp.exe,version: 7.5.7601.17514,time stamp: 0x4ce7afa2
Faulting module name: clr.dll,version: 4.0.30319.18034,time stamp: 0x50b5a783
Exception code: 0xc00000fd Fault offset: 0x000000000001a840
Faulting process id: 0xd50
Faulting application start time: 0x01ce97fe076d27b4
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Report Id: e0c90a5f-0455-11e3-8f0e-005056891553
我不知道如何调试或从哪里开始。当崩溃即将发生时,服务器处理器使用率跳转到100%,并保持在那里。进程故障是w3wp.exe。我甚至不确定我的代码是否生成错误或不。这是IIS 7.5。任何指针将非常感谢。
解决方法
DebugDiag可以配置为在发生StackOverflowException时生成崩溃转储。下载https://www.microsoft.com/en-us/download/details.aspx?id=49924。
>打开DebugDiag,然后单击添加规则。
>“崩溃”应该已经被选中。点击下一步。
>选择“特定IIS Web应用程序池”,然后单击下一步。
>选择应用程序池,然后单击下一步。
>您应该在高级配置窗口。单击高级设置下的例外。
>单击添加例外并选择堆栈溢出,其操作类型为完全用户转储
>单击确定并保存并关闭。
下次发生StackOverflowException时,您将有一个崩溃转储。现在需要解释dump文件。
用于Windows的调试工具是Windows SDK的一部分,可以在http://msdn.microsoft.com/en-US/windows/hardware/gg463009/下载。
>要使用WinDbg,您需要获取符号文件。 Download the symbol files并将其放在本地文件夹中。
>打开WinDbg。在“文件”菜单上,单击“符号文件路径”。
>在符号路径框中,文档说要键入以下命令:SRV *您的本地文件夹的符号* http://msdl.microsoft.com/download/symbols,但是我只是放在本地文件夹的符号和它工作正常。
>退出并再次打开WinDbg,并打开崩溃转储并找到由DebugDiag创建的转储文件。
>在命令行中,键入.loadby sos clr
>现在输入!CLRStack