我们注意到,在我们的Web角色中,Azure“CacheService”Windows进程的内存使用量呈线性增长。可能导致这种情况的原因是什么?
内存泄漏对吗?不,因为我们甚至没有使用它。 Azure角色缓存仅保留在以前删除的功能的监督之上。我们现在关闭它,并且不必对我们的应用程序进行任何更改就可以做到这一点,这应该证明我们实际上并没有使用它,因此内存泄漏情况是不可能的。
正如预期的那样,Windows进程甚至不会在角色缓存已关闭的情况下运行,我们不再有问题。但是,我们仍然想知道在我们需要再次使用它的情况下发生了什么。以下是一些更多细节:
也许启用了角色内缓存允许Web应用程序将其用于某种内置缓存。例如,MVC包被缓存在HttpRuntime.Cache中,所以可能会发生类似的事情吗?我不知道有任何这样的机制,即使有什么内存使用会以这种线性方式增长并且只是继续增长?
我们可以重新打开并编写一个网页/处理程序来列出Azure缓存中的所有项目,看看是否能够解决问题。
答案 0 :(得分:0)
我遇到了类似的问题并发现了这篇文章:
http://blogs.msdn.com/b/cie/archive/2014/01/10/in-role-cache-demystified.aspx
解释如下:
有时,缓存服务可以显示内存使用情况 配置为和原因再次可以过期,被驱逐的对象, 过度使用区域,标签和通知。你会的 工作集缓存服务增加。如果你看到,不要惊慌 这是因为这可能是GC还没有开始的情况 释放记忆。通常在GC的Gen 2收集之后 内存使用量应该降到正常水平。
您还可以将RDP打开到其中一个实例中,并检查性能计数器,假设您已正确启用诊断监视。见这里:https://msdn.microsoft.com/en-us/library/azure/hh914135.aspx#AzureSDK24