我有一个网络应用程序,有时会因负载过大而挂起。为了让它回来,我必须杀死“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 稳定吗?

有帮助吗?

解决方案

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

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

其他提示

你有内存泄漏:)

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top