4

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

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

服务器具有以下配置:

  • 英特尔酷睿 2 双核 2.2 GHz / 4 GB RAM
  • Windows Server 2003 网络版 SP2
  • IIS 6.0

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

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

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

4

3 回答 3

2

你有内存泄漏:)

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

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

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

于 2008-08-21T02:46:49.323 回答
2

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

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

于 2008-08-21T06:08:34.830 回答
1

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

编辑:@Daniel Silveira 可能存在内存泄漏。您使用什么 COM+ 对象?我在使用我支持的应用程序时遇到了一些 Excel 问题。

于 2008-08-21T02:45:29.217 回答