【问题标题】:What can cause an IIS worker process to grow uncontrollably?什么会导致 IIS 工作进程无法控制地增长?
【发布时间】:2009-10-30 14:03:09
【问题描述】:

什么会导致 IIS 工作进程无法控制地增长?

我有一个错误,如果我获取一个页面并加载它,有时它不会增加内存、少量内存 (250k-2MB) 或大量内存 (10MB-30MB)。我不知道是什么原因造成的,但如果您能集思广益,可能会导致这种行为,我将不胜感激。

编辑

所以显然你不能缓存一个 .net 控件并将其从缓存中拉出,而不会以某种方式泄漏内存。我试图缓存一个菜单控件,这导致每次从缓存中请求它时内存都会增加。在这种情况下,解决方案是将项目放入数组或字典中并缓存,然后在加载页面时重新创建项目。这解决了内存泄漏问题,这也是我很难找到它的原因。

【问题讨论】:

  • 它无限增长?还是会在某个时候停止增长?
  • 它无限增长。相同的页面,变化多端,似乎没有限制。

标签: asp.net iis memory-leaks


【解决方案1】:

如果不知道您的应用程序做了什么,很难说您是否有泄漏,或者这是否只是应用程序的自然工作内存使用。

您可能希望通过内存分析器(例如 Red Gate 的Ants Memory Profiler)运行您的应用程序

另外Tess Ferrandezdebugging memory leaks 上有一些很棒的文章。

【讨论】:

    【解决方案2】:

    可能是一大堆原因。可能是您正在创建额外的会话,因此它分配了更多的内存,您没有清理代码中的某些对象,必须获得与数据库的新连接而不是重用一个,分配额外的内存以吸收预期的负载(如果您正在点击在很短的时间内,您可能会触发一些主动式内存管理?)......而且这个列表还在继续。

    每次都吃得一样吗?过程会不断发展壮大吗?

    只有那一页吗?您是否创建了一个空页面并监控它是否相同?然后尝试注释掉问题页面的各个部分,看看是否可以隔离程序?打开 Trace 并观察什么时候调用了什么?有嫌疑吗?

    很多地方可以看...也可能值得在 serverfault.com 上发布此内容

    【讨论】:

      【解决方案3】:

      你能发布页面的代码,或者至少是一个页面的加载和初始化的sn-p吗?
      以下是一些可能有帮助的步骤:

      1. 您报告的第一个调用点的可变结果可能是查看您调用的静态资源或方法,并检查可能与这些相关的初始化过程。
      2. 检查您的应用程序是唯一使用该特定应用程序池的应用程序,并且没有其他应用程序连接。
      3. 确保您没有附加调试工具。 检查您的代码并确保所有循环都正确退出,没有递归进行,并且所有资源始终可访问且是本地的。

      也许这会有所帮助,但如果没有看到您正在使用的代码就很难说。

      干杯

      【讨论】:

        猜你喜欢
        • 2010-09-10
        • 2018-09-14
        • 2010-12-09
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        相关资源
        最近更新 更多