我在Azure上使用HttpRuntime.Cache进行内存缓存。
问题是内存已经满了--然后达到Azure 90%的上限,Azure认为这个角色是不健康的,并重新启动它--使整个站点瘫痪。
现在我找到了EffectivePercentagePhysicalMemoryLimit属性,在Azure上,它似乎被设置为98%,因此超过了90%的“不健康”限制。
HttpRuntime.Cache上更改此限制?该属性是只读的。需要明确的是:我想要内存缓存--我不需要通过Redis共享缓存,因为数据不需要很好地保持一致。
发布于 2020-01-19 13:07:59
您可以通过使用EffectivePercentagePhysicalMemoryLimit中的元素的percentagePhysicalMemoryUsedLimit属性来更改web.config
<configuration>
<system.web>
<caching>
<cache percentagePhysicalMemoryUsedLimit="60" />
</caching>
</system.web>可以在应用程序的配置文件中使用用于缓存的
EffectivePercentagePhysicalMemoryLimit元素(ASP.NET设置模式)元素的percentagePhysicalMemoryUsedLimit属性来设置ASP.NET属性。如果未设置percentagePhysicalMemoryUsedLimit属性,则缓存算法确定缓存的最大大小,并计算EffectivePercentagePhysicalMemoryLimit属性。
您可以获得有关文档的更多信息:Cache.EffectivePercentagePhysicalLimit
另一个选项是禁用Azure自动重新启动机制。它称为积极主动的自动治疗,您可以通过将WEBSITE_PROACTIVE_AUTOHEAL_ENABLED设置为False来禁用它:
WEBSITE_PROACTIVE_AUTOHEAL_ENABLED”并将其设置为“False”。

https://stackoverflow.com/questions/46941877
复制相似问题