【问题标题】:IIS crashes when serving an ASP.NET application under heavy load. How to troubleshoot it?在重负载下为 ASP.NET 应用程序提供服务时,IIS 崩溃。如何解决它?
【发布时间】:2008-09-15 13:12:55
【问题描述】:

我正在开发一个 ASP.NET Web 应用程序,当我尝试在 Visual Studio 中对其进行调试时,它似乎工作正常。但是,当我模拟重负载时,IIS 崩溃而没有任何痕迹——系统日志中的日志条目非常通用,“万维网发布服务意外终止。它已经完成了 4 次。” 如何从 IIS 获取更多信息来解决此问题?

【问题讨论】:

    标签: debugging iis crash


    【解决方案1】:

    下载适用于 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
    

    这应该会给你一些想法。要继续进行故障排除,我建议您阅读以下文章:

    http://msdn.microsoft.com/en-us/library/ms954594.aspx

    【讨论】:

      【解决方案2】:

      asp.net process 的崩溃转储应该给你tons of info..如果你想快速获得一些关于为什么进程被回收的信息,try this tip from Scott Gu.. Health monitoringasp.net 2.0的特性也值得一看..

      【讨论】:

      • 伙计,调试 IIS 很痛苦。我讨厌它。
      【解决方案3】:
      【解决方案4】:

      关键是“没有任何痕迹”。您需要输入自己的跟踪登录来创建一些聊天。然后,您将能够发现聊天停止的位置。

      【讨论】:

        【解决方案5】:

        试试这个https://www.leansentry.com/ - 自动诊断服务器问题的轻量级应用程序监控!

        【讨论】:

          猜你喜欢
          • 2017-10-01
          • 2013-02-18
          • 2021-09-01
          • 1970-01-01
          • 2018-12-02
          • 1970-01-01
          • 2019-03-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多