我有一台Windows服务托管在机器A上运行的WCF服务。 它从运行Appfabric的机器B中检索存储实际对象的对象。 机器B有2个区域,"文章"和" TestArticles"。实时应用程序使用文章,我的测试程序使用TestArticles。
它已经运行了六个月没有问题,但现在突然,实时应用程序开始为某些对象返回null,直到服务重新启动并且所有对象再次被缓存。然后它会运行几个小时,并且会再次返回null。 不使用驱逐和TTL,因此对象应该永远留在那里。 我唯一能想到的就是Appfabric服务器的内存几乎已满。只有43MB的12GB是免费的!
所以我想知道当Appfabric服务器的内存已满并且我尝试在TestArticles区域中缓存更多对象时会发生什么。他们成功了,但Appfabric是否会从文章中丢弃对象?
答案 0 :(得分:1)
Eviction Troubleshooting page有这样说:
Windows Server AppFabric缓存群集使用逐出来控制 缓存服务在缓存主机上使用的内存量。 驱逐发生在两种情况下:
服务器上的可用物理内存严重不足。
缓存服务的内存使用量超过了缓存主机的高水位线。
保持每个缓存上可用于缓存的内存容量 主机,AppFabric支持最近最少使用(LRU)驱逐。
因此,当您的服务器内存不足时,您应该看到LRU驱逐。
无法为每个区域设置驱逐策略,因此最好使用不同的服务器进行实时和测试:或者,如果不是一个选项,则创建两个缓存 - 一个用于实时和一个进行测试 - 并将测试缓存设置为逐出。