首页 文章

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

提问于
浏览
1

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

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

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

  • 从短期和长期来看,增长几乎是线性的 .

  • 增长率约为200mb /天

  • 部署后,它的内存使用量约为600mb .

  • 内存使用率将攀升至约4.2GB,超过总RAM的50%,即使缓存大小设置为最大30% . 此时它引发了问题 .

  • 网站使用情况不是线性的 . 有时候没有用户,有些人同时有数百个用户 .

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

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

1 回答

  • 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

相关问题