【问题标题】:ASP.NET memory problemASP.NET 内存问题
【发布时间】:2011-09-26 15:25:22
【问题描述】:

我有一个 ASP.NET 应用程序,它与另一个 API 通信并在 Page_Load 上处理很多。

如果在我的浏览器中我按住 F5 并点击该站点,服务器将从 120mb 拍摄到 1.5GB。

我找不到任何内存泄漏或未关闭的对象。有什么方法或额外的事情我可以提供帮助吗?

感谢您的宝贵时间!

【问题讨论】:

  • 离开浏览器一段时间后会发生什么? - 记忆恢复了吗?另外,您的 CPU 利用率是多少?
  • 释放 F5 按钮时会发生什么,它会恢复吗?此外,还有其他方法可以对您的应用程序进行性能测试。 Visual Studio Ultimate 有一个测试套件,您可以使用它来发出大量请求,并且实际上可以控制您执行的请求数量。
  • 感谢您的回复。该代码在名为 Umbraco 的 .net cms 内的用户控件内运行。我查看了您的问题,它在大约 10-15 分钟后恢复并回落到 45mb 并慢慢增加到 120mb 并保持在那里。问题是,我发现该网站在周末出现故障,因为我们有大约 30-60k 的访问者。有什么办法可以减少内存使用量吗?
  • 我使用名为 Elmah 的日志记录工具来捕获异常。如果我删除它会有帮助吗?谢谢
  • 我确实在周末得到了 System.OutOfMemoryException,而且当我按住按钮一段时间时。

标签: c# asp.net windows windows-server-2003


【解决方案1】:

使用像 ANTS ProfilerdotTrace 这样的分析器。

有很多很多事情都可能导致这种行为 - 试图用任意建议来解决问题可能不会让我们取得任何进展。

分析器确定问题区域后,如果您无法解决该问题,您可以在新问题中发布该代码。

就其价值而言,1.5 GB 并不是巨大。如果您按住按钮,它最终会给出OutOfMemoryException 吗?

【讨论】:

  • 是的!我们确实在周末得到了 System.OutOfMemoryException,当我按住按钮一段时间时。
  • @Base33 此时听起来像是泄漏。我建议使用分析器来识别问题区域。要查找的内容:互操作、订阅静态事件的实例对象等。
【解决方案2】:

我建议研究 Red Gate 的 ANTS Memory Profiler 和/或 ANTS Performance Profiler。它们非常实惠,并且在识别瓶颈方面做得很好。

ANTS 内存分析器:
http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

ANTS 性能分析器:
http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

【讨论】:

    【解决方案3】:

    +1 表示“分析并找出问题” - 如果您想解决问题,就必须了解正在发生的事情。

    但在短期内,迁移到体面的 64 位盒/64 位版本的 Windows 并使用 64 位 ASP.Net 可能更便宜、更容易——您将获得更多可用于 IIS 进程的内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2010-09-24
      相关资源
      最近更新 更多