什么可能导致Azure角色内缓存进程线性内存增长?

时间:2014-07-23 13:32:50

标签: asp.net caching azure azure-caching

我们注意到,在我们的Web角色中,Azure“CacheService”Windows进程的内存使用量呈线性增长。可能导致这种情况的原因是什么?

内存泄漏对吗?不,因为我们甚至没有使用它。 Azure角色缓存仅保留在以前删除的功能的监督之上。我们现在关闭它,并且不必对我们的应用程序进行任何更改就可以做到这一点,这应该证明我们实际上并没有使用它,因此内存泄漏情况是不可能的。

正如预期的那样,Windows进程甚至不会在角色缓存已关闭的情况下运行,我们不再有问题。但是,我们仍然想知道在我们需要再次使用它的情况下发生了什么。以下是一些更多细节:

  • 从短期和长期来看,增长几乎是线性的。
  • 增长率约为200mb /天
  • 部署后,它的内存使用量约为600mb。
  • 即使缓存大小设置为最大30%,内存使用量也会攀升至大约4.2GB,超过总RAM的50%。此时它引发了问题。
  • 网站使用情况不是线性的。有些时候没有用户,有些人同时有数百个用户。

也许启用了角色内缓存允许Web应用程序将其用于某种内置缓存。例如,MVC包被缓存在HttpRuntime.Cache中,所以可能会发生类似的事情吗?我不知道有任何这样的机制,即使有什么内存使用会以这种线性方式增长并且只是继续增长?

我们可以重新打开并编写一个网页/处理程序来列出Azure缓存中的所有项目,看看是否能够解决问题。

1 个答案:

答案 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