关于在IIS下的.NET网站出现应用池挂掉的Bug排查方法

@老徐  January 16, 2017

环境:MVC4+IIS7

现象:测试的时候没有显现出来,当运行到生产环境出现大量访问量的情况下,会出现如下错误:


如果应用程序池挂掉的话,可以肯定的是,代码出现了很严重的错误,导致程序挂了,原因可能是死循环之类的。而又是个别现象引起,测不出来,只能想其他的办法了。

解决方法

首先,在服务器端:

1.开启Windows Error Reporting Service服务

2.执行下面的注册表脚本,在w3wp.exe程序挂掉的时候,自动将dump文件保存到D:\dumps文件夹中:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\w3wp.exe]
"DumpFolder"=hex(2):64,00,3a,00,5c,00,64,00,75,00,6d,00,70,00,73,00,00,00
"DumpCount"=dword:00000002
"DumpType"=dword:00000002

3.记录出问题的w3wp.exe程序的pid,把生成的dump文件复制到本地,进行调试。

之后,在本机:

1.双击从服务器上拿下来的dump文件,使用vs(2013、2015等,2010、2008没有测试过)打开,之后会显示出异常摘要等信息。

2.点击右侧“操作”列中的“设置符号路径”菜单

3.通过菜单“视图”——“解决方案资源管理器”,打开解决方案管理器,之后打开解决方案的属性页,选择调试源文件,之后新加一行,选择对应的源代码(项目)文件夹,之后确定保存。

4.回到dump文件摘要页面,通过右侧“操作”菜单下的“使用仅限托管进行调试”菜单进行调试,可以定位到问题代码位置进行解决处理。当然根据问题的不同,还可以选择其他几个调试方法。

以上。


添加新评论