我正在开发一个 ASP.NET Web 应用程序,当我尝试在 Visual Studio 中调试它时,它似乎工作正常。但是,当我模拟重负载时,IIS 崩溃而没有任何痕迹——系统日志中的日志条目非常通用,“万维网发布服务意外终止。它已经完成了 4 次。” 如何从 IIS 获取更多信息来解决此问题?
5 回答
下载适用于 Windows 的调试工具:http: //www.microsoft.com/whdc/DevTools/Debugging/default.mspx
Windows 调试工具有一个脚本 (ADPLUS),允许您在进程崩溃时创建转储:http: //support.microsoft.com/kb/286350
该命令应该类似于(如果您使用的是 IIS6):
cscript adplus.vbs -crash -pn w3wp.exe
此命令会将调试器附加到工作进程。当崩溃发生时,它将生成一个转储(一个 *.DMP 文件)。
您可以在 WinDBG 中打开它(也包含在 Windows 调试工具中)。文件 > 打开故障转储...
默认情况下,WinDBG 将显示(在命令行旁边)进程崩溃的线程。
在 WinDBG 中需要做的第一件事是加载 .NET Framework 扩展:
.loadby sos mscorwks
然后,您将显示托管调用堆栈:
!clrstack
如果线程没有运行托管代码,那么您需要检查本机堆栈:
kpn 200
这应该会给你一些想法。要继续进行故障排除,我建议您阅读以下文章:
asp.net 进程的崩溃转储应该为您提供大量信息..如果您想快速获取有关进程为何被回收的一些信息,请尝试 Scott Gu 的此提示.. asp.net 2.0 的健康监控功能也值得一看在..
关键是“不留痕迹”。您需要输入自己的跟踪登录来创建一些聊天。然后,您将能够发现聊天停止的位置。
试试这个https://www.leansentry.com/ - 自动诊断服务器问题的轻量级应用程序监控!