Appfabric奇怪的行为

时间:2015-07-07 13:24:39

标签: appfabric appfabric-cache

我有一台Windows服务托管在机器A上运行的WCF服务。 它从运行Appfabric的机器B中检索存储实际对象的对象。 机器B有2个区域,"文章"和" TestArticles"。实时应用程序使用文章,我的测试程序使用TestArticles。

它已经运行了六个月没有问题,但现在突然,实时应用程序开始为某些对象返回null,直到服务重新启动并且所有对象再次被缓存。然后它会运行几个小时,并且会再次返回null。 不使用驱逐和TTL,因此对象应该永远留在那里。 我唯一能想到的就是Appfabric服务器的内存几乎已满。只有43MB的12GB是免费的!

所以我想知道当Appfabric服务器的内存已满并且我尝试在TestArticles区域中缓存更多对象时会发生什么。他们成功了,但Appfabric是否会从文章中丢弃对象?

1 个答案:

答案 0 :(得分:1)

Eviction Troubleshooting page有这样说:

  

Windows Server AppFabric缓存群集使用逐出来控制   缓存服务在缓存主机上使用的内存量。   驱逐发生在两种情况下:

     

服务器上的可用物理内存严重不足。

     

缓存服务的内存使用量超过了缓存主机的高水位线。

Expiration and Eviction页面也说:

  

保持每个缓存上可用于缓存的内存容量   主机,AppFabric支持最近最少使用(LRU)驱逐。

因此,当您的服务器内存不足时,您应该看到LRU驱逐。

无法为每个区域设置驱逐策略,因此最好使用不同的服务器进行实时和测试:或者,如果不是一个选项,则创建两个缓存 - 一个用于实时和一个进行测试 - 并将测试缓存设置为逐出。