【问题标题】:High App Pool Memory Usage Causes ASP.net Site To Have Slow Response Time应用程序池内存使用率高导致 ASP.net 站点响应时间慢
【发布时间】:2013-10-27 14:38:03
【问题描述】:

我们有一个 ASP.net MVC Web 应用程序,它在运行几天后使用了大量内存 (4GB)。我们运行它的服务器有足够的余力(CPU 运行大约 10% 和 7% 的内存使用率),但由于某种原因,随着应用程序池中内存的增加,站点的响应时间会降低。

即使是缓存的页面也需要很长时间才能加载。这些缓存的页面应该从内存中提供,这应该是即时的。我们缓存了很多页面和很多数据库调用,所以 App Pool 这么大并不让我感到惊讶,但对我来说缓存的越多,运行所需的时间越长,这对我来说没有任何意义。网站作出回应。

如果我回收应用程序池,网站又超级快了。我们使用的是 Windows 2012、IIS 8 和 SQL 2012。

有人知道为什么会发生这种情况吗?

非常感谢!

【问题讨论】:

  • 如果不访问您的代码库,这似乎很难回答。您是否以某种方式集中缓存代码,以便展示您的操作方式?你是否有定时缓存过期,或任何其他机制来偶尔清除旧的/不必要的缓存?
  • 感谢您的回复。我们在控制器操作中使用 Mvc OutputCacheAttribute,在存储库调用中使用 Microsoft Enterprise Library Cache。在大多数情况下,我们永远不会清除未来不会更改的项目的缓存。您是否建议缓存中的大量旧项目会减慢整个 Web 应用程序的响应时间?
  • 当您的 RAM 被填满,并且相同的项目在其中放置很长时间而未被访问时,操作系统可能会决定将该数据交换到磁盘(因为它认为这样做是安全的,性能方面,因为它不会被使用)。至少,我认为 RAM 是这样工作的 =P 所以换句话说,您的缓存数据可能会导致您撞到硬盘驱动器(操作较慢)。

标签: asp.net performance caching iis


【解决方案1】:

这是一个相当广泛的问题,但我建议在服务器上安装类似 New Relic 的东西,以尝试找出导致内存泄漏的瓶颈或代码。

它会给你一个密集功能的报告。

在免费高级试用期间,您可以很好地了解出了什么问题(无需卡或任何东西)。

【讨论】:

  • 感谢您的建议。我会看看这个工具。我认为在生产服务器上使用是安全的吗?您是否遇到过我们自己遇到的问题并能够解决?
  • @SwisherSweet 我以前遇到过这样的问题,是的,在生产环境中运行是安全的,尽管它需要重新启动 IIS,因此您需要安排一些停机时间。我们确实找到了导致问题的恶意代码。
猜你喜欢
  • 2015-04-02
  • 1970-01-01
  • 2012-03-28
  • 2020-04-03
  • 2016-05-10
  • 2021-10-14
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多