【问题标题】:Why does w3wp memory keeps increasing?为什么w3wp内存不断增加?
【发布时间】:2017-05-09 18:10:36
【问题描述】:

我在一个具有 3GB RAM 的中型实例上。当我启动我的 webapp 时,w3wp 进程从 80MB 开始。我注意到随着时间的流逝,这个过程会越来越长......现在我对进程进行了内存转储,当时它是 570MB 并且站点运行了 5 天,以查看是否有任何正在消耗的 .NET 对象很多,但发现最大的对象是 18MB,它是一组字符串对象。

我没有使用任何缓存对象,因为我使用 redis 进行会话存储,实际上转储显示缓存中没有任何内容。

现在我的问题如下......我在想,因为我有 3GB 的内存,IIS 会在内存中保留一些页面(缓存),所以只要有请求,网站就会更快,这就是内存保持不变的原因增加。我担心的是我在某种程度上存在一些内存泄漏,即使我在使用时处理了所有 EntityFramework 对象,或者需要处理任何其他适当的流。当达到某个特定阈值时,我假设内存中的旧缓存数据被删除并包含新页面。我这样说对吗?

我想指出,过去我在一个小实例上,百分比从未超过 70%,现在我在中等实例上,内存已经是 60%.... 非常非常奇怪相同的代码。

如果有人愿意帮助我,我可以发送内存转储。

【问题讨论】:

  • 我不熟悉你的框架,但一般框架会像你描述的那样做一些缓存。基本上我认为你不应该担心,除非你达到 3GB 并且你的框架没有进行某种垃圾收集。您可以通过只给它 200ish MB 来测试它,并查看它是否在接近最大值时进行垃圾收集。然而,这都是猜测,也许有更多知识的人可以给你一个特定于平台的答案。
  • 您能直接或indirectly 分享您的网络应用名称吗?这将有助于我们进行调查。谢谢!
  • 大卫我的网站正在展示中

标签: azure azure-web-app-service w3wp


【解决方案1】:

存在影响少数 Web 应用的问题,我们正在努力修补。

如果您遇到此特定问题,有一个解决方法:

  • 转到您的应用的 Kudu 控制台(例如 https://{yourapp}.scm.azurewebsites.net/DebugConsole)
  • 进入 LogFiles 文件夹。如果您遇到此问题,您将拥有一个非常大的 eventlog.xml 文件
  • 通过运行attrib +r eventlog.xml 将该文件设为只读
  • (可选)重新启动您的 Web 应用,以便您拥有干净的 w3wp
  • 监控使用量是否仍然上升

一个缺点是您将不再生成这些事件,但在大多数情况下它们是不需要的(这是暂时的)。

问题已确定,但我们还没有部署的 ETA。

【讨论】:

  • 您好,有问题的文件为 1.8mb。然而,这从昨天开始。现在,昨天也发生了一件奇怪的事情。我将服务计划修改为小,然后又改回中,所以我重置了所有进程,现在服务器处于 40% 的内存标记上,这很好,即使 w3wp 仍然缓慢增加。现在在凌晨 1.45 左右没有用户时,我看到我的 Web 服务器内存达到了 97% 的内存,并且我的网站上基本上没有用户。奇怪的事情真的发生了。当我打开应用洞察时,我仍然发现 w3wp 进程并没有增加。
  • @MarkFarrugia 那么您可能正在处理与我描述的不同的事情。虽然可以肯定的是,我仍然建议尝试将其设为只读并检查是否有影响。
  • 谢谢大卫。你能从服务器检查为什么会有那个尖峰.... 老实说,在我这样做之后,我的 IIS 进程没有增加,并且服务器的内存稳定在 40%,除非现在会发生什么。工作集现在位于 250mb,非常好。同样在一个镜像网站上,我在凌晨 3 点测试了回收网站,以便该过程始终是新鲜的并且似乎没问题。不过,我不知道这是否是一种好习惯。
  • 大卫请你帮帮我...我再次遇到这个问题就像 1 小时前一样。 w3wp 进程跳转到 2gb 并且站点意外终止并且没有加载任何内容。当我检查错误时,它告诉我没有找到我使用 redis 的方法,因为根本没有修改代码,所以情况并非如此。如果您继续使用网络服务器,您会看到内存跃升至 95%,即北欧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2015-12-06
  • 2014-11-13
  • 2014-06-14
相关资源
最近更新 更多