AppFabric缓存 - 非常慢或配置错误?

时间:2013-04-10 08:45:37

标签: c# appfabric

一些细节; 我在与IIS相同的机器上运行开箱即用的AppFabric 1.1配置。 我没有启用AppFabrics的本地缓存,因为我对本地缓存边界之外的性能感兴趣。

现在显然像httpruntime缓存这样的进程内缓存速度非常快。事实上它能够检索一个测试数据集,其中包含大约14,000条记录(序列化时大约25MB),不到10毫秒。

但是,从app fabric检索相同数量的数据大约需要9秒。 显然这是一个巨大的差异,因为我永远不会将其用作任何替代品(我暗中希望我能够这样做)。

这种表现听起来不错吗?配置中是否有任何明显的陷阱错过了?

1 个答案:

答案 0 :(得分:2)

我会尽力回答......

首先,你没有比较同样的事情:当你从HttpRuntime缓存获得一些东西时,你得到了对内存中初始项的引用。如果某些代码修改了此项,则所有其他用户/线程都将看到更改。这就是为什么有时会建议克隆你放入本地缓存的所有内容。

由于AppFabric Cache是​​为Web Farms设计的,因此无法执行此操作,因为需要通过网络发送对象(即使主机位于同一台计算机上)。因此,使用NetDataContractSerializer序列化数据项。

AppFabric并不比HttpRuntime快,因为它不是为此而设计的。它专为WebFarms和大量数据而设计,可以使应用程序获得更好的可靠性,可伸缩性和性能。

例如,在我的公司,几年前我们只使用了HttpRuntime Cache。现在完全不可能,因为我们有超过30台服务器并且数据库超载:AppFabric是减少数据库负载和提高Web应用程序性能的完美解决方案(来自缓存集群但未从数据库加载的项目)。

如果您只有一台服务器,我们非常确定使用AppFabric不会有任何优势。它还建议有专用的缓存主机。

最后,我确信您的对象上还有一些事情要做,因为14 000的数据集不是最佳的!