Azure的HttpRuntime.Cache设置?

时间:2017-10-25 20:53:39

标签: asp.net azure caching memory

我在Azure上使用HttpRuntime.Cache进行内存缓存。

问题是内存已满 - 然后它达到Azure的90%百分比限制,Azure认为该角色不健康并重新启动它 - 使整个网站崩溃。

现在我找到了 EffectivePercentagePhysicalMemoryLimit 属性,它似乎在Azure上设置为98%,因此高于90%'不健康'限制。

  • 如何在HttpRuntime.Cache更改此限制?该物业是只读的。
  • 可以将Azure自动重启百分比调整到更高一点吗?
  • 使用内存缓存是否还有其他推荐设置?还有其他课我应该用吗?我可以在Azure中找到很少的信息。如果数据需要在多个实例之间保持一致,大多数文章都会讨论单独的缓存服务。

要明确:我想要内存缓存 - 我不需要通过Redis进行共享缓存,因为数据不需要保持一致。

1 个答案:

答案 0 :(得分:1)

您可以使用web.config中cache ElementEffectivePercentagePhysicalMemoryLimit属性来更改percentagePhysicalMemoryUsedLimit

<configuration>
  <system.web>
    <caching>
      <cache percentagePhysicalMemoryUsedLimit="60" />
    </caching>
  </system.web>

可以使用应用程序配置文件中用于缓存(ASP.NET设置架构)元素的EffectivePercentagePhysicalMemoryLimit元素的percentagePhysicalMemoryUsedLimit属性来设置cache属性。如果未设置percentagePhysicalMemoryUsedLimit属性,则缓存算法确定缓存的最大大小,并计算EffectivePercentagePhysicalMemoryLimit属性。

您可以获取有关文档的更多信息:Cache.EffectivePercentagePhysicalLimit


另一个选项是禁用Azure自动重启机制。它称为Proactive Auto Heal,您可以通过将WEBSITE_PROACTIVE_AUTOHEAL_ENABLED设置为False来禁用它:

  1. 转到portal.azure.com并转到要禁用该功能的Web应用程序。
  2. 在“设置”下,转到“应用程序设置”。
  3. 在“应用程序设置”下,添加“ WEBSITE_PROACTIVE_AUTOHEAL_ENABLED”并将其设置为“ False”。
  4. 就是这样!主动自动修复已禁用。

enter image description here