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

本文关键字:配置 错误 非常 缓存 AppFabric | 更新日期: 2023-09-27 18:08:19

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

现在很明显,像httpruntime缓存这样的进程内缓存将会非常快。事实上,它能够在10毫秒内检索正在测试的数据集,该数据集包含大约14,000条记录(序列化时约为25MB)。

然而,从应用程序结构中检索相同数量的数据大约需要9秒。显然,这是一个巨大的差异,因为我永远不会使用这个作为任何形式的替代(我私下希望我可能能够)。

这个表演听起来对吗?在配置中是否有我遗漏的明显缺陷?

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

我试着回答....

首先,你不是在比较相同的东西:当你从HttpRuntime缓存中获得一些东西时,你是在内存中获得对初始项的引用。如果一些代码修改了这个条目,所有其他的用户/线程都会看到这个变化。这就是为什么有时建议将放入本地缓存的所有内容克隆出来。

因为AppFabric Cache是为Web farm设计的,你不能这样做,因为对象需要通过网络发送(即使主机在同一台机器上)。因此,数据项是使用NetDataContractSerializer序列化的。

AppFabric并不比HttpRuntime快,因为它不是为此而设计的。它专为WebFarms和大量数据而设计,使应用程序具有更好的可靠性,可扩展性和性能。

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

如果你只有一个服务器,使用AppFabric肯定不会有任何优势。还建议使用专用的缓存主机。

最后,我确信在你的对象上还有一些事情要做,因为14000的数据集不是最优的!