【问题标题】:IIS 6/COM+ hangsIIS 6/COM+ 挂起
【发布时间】:2008-08-21 02:43:23
【问题描述】:

我有一个 Web 应用程序,有时会因为负载过重而挂起。为了让它回来,我必须杀死“dllhost.exe”进程。 有人知道该怎么做吗?

这是一个带有大量 COM+ 对象的经典 ASP (VBScript) 应用程序。

服务器有如下配置:

  • Intel Core 2 Duo 2.2 GHz / 4 GB RAM
  • Windows Server 2003 网络版 SP2
  • IIS 6.0

事件日志中有一些与 COM 对象相关的错误。但是为什么 COM 对象中的错误会导致整个服务器崩溃呢?

COM 对象是部署为 COM 对象的 PowerBuilder 对象。

IIS 7.0(很多)是否比 IIS 6.0 稳定?

【问题讨论】:

    标签: iis dll asp-classic crash


    【解决方案1】:

    听起来像是导致问题的狡猾的 COM 对象......你是否将它们加载到“应用程序”中,如果你这样做了,那么它们是线程安全的吗?还是在每个请求中都使用和丢弃它们?

    是的,每隔几个小时回收一次将有助于“隐藏”问题,但它们应该被正确调试和修复......你是否尝试过分/治来发现哪个 COM 对象是问题......我可以想象这个在生产环境中很棘手,因此您需要设置一些繁重的自动化测试以在本地重现问题,然后您可以做一些事情。

    【讨论】:

      【解决方案2】:

      你有内存泄漏:)

      这篇博文是我的 IIS 故障排除圣经:

      http://blogs.msdn.com/david.wang/archive/2005/12/31/HOWTO_Basics_of_IIS6_Troubleshooting.aspx

      如果您无法审核您的代码并找到引用泄漏的位置,另一种方法是通过每 24 小时左右重新启动 IIS 来回收应用程序。您只需将命令行脚本设置为服务器作业即可。

      【讨论】:

      • 你可以只回收应用程序池。回收选项卡就是为此而构建的。不需要脚本。
      【解决方案3】:

      应用程序和系统类别下的事件日志中可能存在一些错误。尝试找出这些错误的根源或将它们发布在这里,我们会看看我们能做些什么:)

      编辑: @丹尼尔·西尔维拉 很可能是内存泄漏。您使用什么 COM+ 对象?我在使用我支持的应用程序时遇到了一些 Excel 问题。

      【讨论】:

        猜你喜欢
        • 2011-04-15
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 2011-09-16
        • 2010-10-13
        • 2013-04-14
        • 1970-01-01
        相关资源
        最近更新 更多