【问题标题】:What could be causing Azure In-Role Caching process linear memory growth?什么可能导致 Azure 角色内缓存进程线性内存增长?
【发布时间】:2014-07-23 13:32:49
【问题描述】:

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

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

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

  • 从短期和长期来看,增长几乎完全是线性的。
  • 增长率约为 200mb/天
  • 部署后,它开始使用大约 600mb 的内存。
  • 即使高速缓存大小设置为最大值 30%,内存使用量也会攀升至大约 4.2GB,超过总 RAM 的 50%。在这一点上,它引起了问题。
  • 网站使用不是线性的。有时没有用户,有时同时有数百个用户。

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

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

【问题讨论】:

    标签: asp.net caching azure azure-caching


    【解决方案1】:

    我遇到了类似的问题,发现这篇文章:

    http://blogs.msdn.com/b/cie/archive/2014/01/10/in-role-cache-demystified.aspx

    解释如下:

    有时缓存服务显示的内存使用量超过实际值 配置为和原因再次可能是过期的,驱逐的对象, 过度使用区域、标签和通知。你将 缓存服务的工作集增加。如果你看到不要惊慌 这是因为这可能是 GC 尚未启动的情况 释放内存。通常在从 GC 收集第 2 代之后 内存使用量应该会降到正常水平。

    假设您已正确启用诊断监控,您还可以在其中一个实例中打开 RDP 并检查性能计数器。见这里:https://msdn.microsoft.com/en-us/library/azure/hh914135.aspx#AzureSDK24

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2013-08-01
      • 2015-04-19
      • 2018-05-14
      • 1970-01-01
      相关资源
      最近更新 更多