【发布时间】: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