我们有一个使用Windows Server AppFabric缓存的应用程序。缓存位于本地计算机上,未启用本地缓存。这是代码中的配置,在.config中没有。
DataCacheFactoryConfiguration configuration= new DataCacheFactoryConfiguration();
configuration.Servers= servers;
configuration.MaxConnectionsToServer= 100; // 100 is maximum
configuration.RequestTimeout= TimeSpan.FromMilliseconds( 1000);
PutAndUnLock上的对象过期是两分钟。
以下是一些典型的性能监视器值:
Total Data Size Bytes 700MB
Total GetAndLock Requests /sec Average 4
Total Eviction Runs: 0
Total Eviced Objects: 0
Total Object COunt: either 0 or 1.8447e+019 (suspicious, eh?) I think the active object count should be about 500.
这是在虚拟机上运行,我认为我们根本不受硬件限制。
问题:每隔几分钟,从1到20不等,持续一秒钟左右,所有请求(Get,GetAndLock,Put,PutAndLock)超时。
我在网上看到的唯一补救措施是增加RequestTimeout。如果我们增加到2秒,问题似乎不那么频繁发生,但仍然会发生。我们不能更多地增加超时,因为我们需要时间在缓存超时后从头开始创建对象。