AppFabric缓存服务器和Web应用程序在同一物理机器上

buh*_*tla 9 .net c# caching distributed-caching appfabric

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

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

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

以下是本文的链接:文章#1

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

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

以下是本文的链接:文章#2

如果我正确理解上面的声明,这意味着尽管我的AppFabric的配置设置,它将需要尽可能多的RAM吗?这真的可以吗?有没有人在应用程序和AppFabric位于同一台机器上的配置方面有一些经验?

np-*_*ard 4

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

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

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

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

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