【问题标题】:Memory leak detection in asp.net websiteasp.net 网站中的内存泄漏检测
【发布时间】:2016-04-23 08:49:55
【问题描述】:

我的 asp.net 网站在 20 分钟内增长到 2 GB 并重新启动。 当我运行这个网站时,在本地主机上抛出 Visual Studio 并更新一页 30 次,网站增长了 ~50-100 MB。 我试图在没有数据库连接和布局的情况下运行非常简单的页面。这一页上只有一个字。经过数百次更新此页面网站并没有增长。 然后我尝试返回到第一个(复杂)页面,但我已经注释了 cshtml 文件中的所有标记。此页面上只有布局。网站正在增长 微不足道。 然后我评论了布局,只留下了带有许多注入数据的简单表格标记。 30 次更新后,网站再次增长约 50-100 MB。

我尝试使用 dotMemory 来检测原因。它的一些截图:

如果我可以提供更多信息,请告诉我。

第 2 代的碎片化率为 97%。 (使用 138 MB,免费 220)。我不知道它是怎么回事。

我拍摄了 2 张快照。大部分新对象(和新字节)都是Char[],哪一部分是StringBulder,哪一部分是PageExecutionContext,哪一部分是CacheEntry。

我认为,它是一些视图缓存(cshtml 文件)。但这只是猜测。

谁能帮我解决这个问题?

【问题讨论】:

  • 请提供一些技术细节。没有它,我们无法为您提供帮助。
  • @PiyushKhatri,我准备给你更多细节,但我不知道你需要什么细节。
  • 我需要详细信息,例如您拥有的页面类型。正如你在这里写的那样,你不使用数据库,所以只是 aspx 页面?还是只是 html 静态页面?总共有多少页?等等
  • @PiyushKhatri,我只测试了一页。这是包含来自数据库的许多数据的 cshtml 文件。我已经尝试清除所有标记,但留下了所有数据库逻辑。在这种情况下,应用程序的内存不会增长。调用了数据库上下文的 Dispose() 方法。
  • 所以这意味着数据内存的bec增长。您可以做的一件事是询问您的托管服务提供商。

标签: c# asp.net asp.net-mvc memory memory-leaks


【解决方案1】:

为时已晚,但这是我的答案。

我有 MVC 5.0 并且遇到了同样的问题。升级到 5.2.3 后,一切都消失了,内存使用恢复正常。

【讨论】:

    【解决方案2】:

    我找到了答案。我将 EF 中的导航属性用作包含大约 100 000 个实体的集合。并且每秒都会从数据库中加载此实体,只是为了向此集合添加新实体。

    解决方案:不要在这么大的集合上使用导航属性。要添加实体,请使用 DbContext 中的 DbSet。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-13
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      相关资源
      最近更新 更多