9

我正在考虑为我们的一个项目使用 AppFabric 缓存功能。我们需要分布式缓存功能,看来 AppFabric 是一个很好的解决方案。但是,我有几个问题希望在这里得到解答。

我们正在考虑在安装了我们的 Web 应用程序的同一台机器上托管 AppFabric 缓存服务器。我在 MSDN 文章中发现 AppFabric 应该安装在专用机器上。还注意到 AppFabric 可以与应用程序本身安装在同一台机器上,但应考虑一些问题(引自文章):

Windows Server AppFabric 缓存主机应该专用于缓存服务,这意味着这些服务器不能同时用作应用程序、Web 或数据库服务器。可以在集群中使用非专用缓存服务器,但不支持这种情况。尽管有此策略,但如果您决定使用非专用缓存主机,请确保正确估计和测试每个缓存主机的配置,以便为缓存服务和机器上的所有其他服务提供足够的内存和网络资源。还要了解其他服务的处理器和网络利用率峰值将对缓存集群的性能和稳定性产生负面影响。

这是这篇文章的链接:文章#1

现在,这听起来很合理,我认为限制可以使用的 RAM AppFabric 缓存数量就足够了。但是,阅读 MSDN 上的另一篇文章,我发现了这一点:

对于物理机和虚拟机,您都应该将缓存集群的位置记录到使用缓存的应用程序或 Web 服务器上。如果它们位于不同的数据中心,请确保这些数据中心之间的延迟不会对您的性能产​​生负面影响。在这个阶段,可能很想将您的应用程序或 Web 服务器用作缓存服务器。尽管可能,但这不受支持。首先,这些机器上的 IIS 等服务的任何资源使用高峰都可能影响缓存集群。其次,缓存服务假定它位于专用服务器上,并且可能使用比您指定的更多的内存。

这是这篇文章的链接:文章#2

如果我正确理解了上面的陈述,这意味着尽管我对 AppFabric 进行了配置设置,但它会占用尽可能多的 RAM?这真的是真的吗?有没有人对应用程序和 AppFabric 位于同一台机器上的配置有一些经验?

4

1 回答 1

4

为了分享我关于 appfabirc 的故事,我们开始在共享服务器上使用 appfabric 缓存,但由于以下问题最终不得不将其取出...

  1. 我们试图在其中保存对象,并且这样做您必须序列化整个图并将其发送到服务器,在高需求场景中,不确定它比从数据库本身提取效率高多少。另外,您可以告别任何委托或事件连接,或对象中的异步操作。

  2. 缓存服务本身会间歇性地抛出错误,说它不可用,然后您将不得不使用 powershell 检查它的运行状况。此外,只要您的盒子使用超过 90% 的 RAM,它就会停止工作。

  3. 即使盒子上有一点内存压力,它也会积极尝试从缓存中逐出项目,并且总是为此占用大约 10-20% 的 cpu....

总而言之,我认为 MS 的建议是正确的,它需要拥有自己的专用集群,但是每个应用程序都有自己独特的需求,您应该根据部署环境中的参数对其进行评估。

于 2011-11-17T15:39:56.757 回答