【问题标题】:IIS Hang TroubleshootingIIS 挂起故障排除
【发布时间】:2010-10-13 05:24:11
【问题描述】:

我在 IIS 6 (Windows Server 2003) 上运行的网站偶尔会挂起。

时间线:

发布到野外,网站运行良好 3天。

网站在每次请求时都会挂起,直到 该网站已停止并启动。

网站运行了 2 周,没有 问题。

网站在每次请求时都会挂起,直到 网站已重新启动。

在挂起开始之前,我们会看到一些应用程序日志条目: 错误应用程序 w3wp.exe,错误模块未知,版本 0.0.0.0 错误地址--------。

网站上安装的应用程序是用 .Net 2.0 编写的。

谁能指导我解决这个问题? 谢谢!

【问题讨论】:

    标签: iis-6 .net-2.0 windows-server-2003 freeze


    【解决方案1】:

    您最好的选择可能是使用 adplus 捕获挂起的 w3wp 进程的内存转储,然后使用 windbg + sos 扩展来尝试确定挂起的原因。

    您可以在此处获取 adplus 和 Windbg: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

    此外,Tess Ferrandez 的博客绝对是有关学习如何使用 Windbg 分析内存转储的信息的金矿。她甚至有一组针对特定场景的实验室,您可以通过这些实验室。

    https://docs.microsoft.com/en-us/archive/blogs/tess/

    【讨论】:

      【解决方案2】:

      发生这种情况的原因有很多。几年前,我在生产中的 web 项目中发生了这种情况,并打电话给微软来修复它。我希望我能给你具体的细节,但这是我记得的。

      .NET 缓存您的 Web 应用程序中的文件夹。服务器上有一个注册表项(不记得在哪里)设置了文件夹限制(信不信由你)。默认情况下,限制设置为 150 个文件夹。如果您的 Web 应用程序中有多个文件夹,并且您尝试访问第 151 个文件夹,则会导致 IIS 崩溃。

      是的,这听起来很疯狂,但相信我,我在 Microsoft 工作了数周,直到我们找出了崩溃的原因。当时的答案是提高注册表的限制并重新启动服务器。这是几年前的事了,我希望在以后的更新中能解决这个问题,但我提供给你是为了以防你使用的是旧版本的 Server 2003。

      很抱歉,我无法提供更具体的细节,但我只想让你知道我的经历,以防这听起来像你的问题。

      【讨论】:

        【解决方案3】:

        确保 IIS 设置为能够自动回收其进程,如果是内存泄漏,可能有助于解决问题。 (好吧,解决问题没有解决)

        我的建议是为您的应用程序提供自己的应用程序池,这样您就可以 100% 确定它是您认为导致服务器宕机的应用程序,当这种情况发生时应用程序日志会显示什么内容?

        根据您提供的信息,这听起来像是内存泄漏或打开的数据库连接/线程问题。

        附言 如果您使用的是 N2,则存在一个已知问题,即 IIS 回收时它不会恢复。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-15
          相关资源
          最近更新 更多