为什么 w3wp 内存不断增加?



我在一个有3GB RAM的中型实例上。当我启动我的网络应用程序时,w3wp 进程以 80MB 开始。我注意到时间越长,这种情况就会上升......现在,我在进程为570MB并且站点运行了5天时对进程进行了内存转储,以查看是否有任何.NET对象消耗大量,但发现最大的对象是18MB,这是一组字符串对象。

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

现在我的问题如下...我在想,由于我有 3GB 的内存,IIS 将在内存中保留一些页面(缓存),因此每当有请求时网站都会更快,这就是内存不断增加的原因。我担心的是,即使我在使用时释放所有 EntityFramework 对象或需要释放的任何其他适当流,我也会以某种方式出现一些内存泄漏。当达到某个特定的阈值时,我假设内存中的旧缓存数据被删除并包含新页面。我这样说对吗?

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

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

有一个问题影响了少量的 Web 应用程序,我们正在进行修补。

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

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

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

问题已确定,但我们还没有部署的预计到达时间。

最新更新