2011-10-23 33 views
4

在工作中,我们正在讨论专用内存缓存服务器的可能性。这两种选择是Windows AppFabric Cache Server和Memcached。所以我设置了两个测试,一个用于AppFabric,一个用于Memcache。本地AppFabric和本地Memcache - 严格的性能演讲

内存缓存测试 OS /设备 Memcache VMWare Appliance 在VMWare工作站,四核虚拟化和与MemCachedDOTnet_2.0 C#API RAM 8GB的。

当我将一些物体放入缓存后,我开始计时,平均得到了。

  • 认沽0-1MS(准确率只有毫秒)
  • 获取14-15MS

AppFabric的缓存服务器 没有VM,因为它的所有窗口。四核与8gb内存。 同样的事情,我开始工作之前,我推了几个对象缓存。本地缓存选项已在客户端设置中禁用。

  • 认沽0-1MS(准确率只有毫秒)
  • 获取0-1ms(准确率只有毫秒)

现在的问题是我听到Memcached是超级快,但我认为它比AppFabric快,但在Gets vs AppFabric上速度不会慢15ms。对于AppFabric和/或MemCache,其他人的表现如何?我只是寻找原始数据的MS和对象大小或我应该看看的东西,看看我能否让数字排列更符合我的期望或选项来设置或检查。

+0

我已经非常成功地使用了AppFabric,并且发现它在高流量场景中表现非常好,并且有数千个并发连接。也就是说,我也觉得memcache似乎表现如此糟糕,令人惊讶。我以前从来没有过MemCachedDOTnet_2.0,所以也许这也可能是瓶颈,尽管我的第一次预感肯定是虚拟机。 – s1mm0t

+0

@ s1mm0t我应该尽管我正在使用的客户端。我会尝试再多抓一些,然后编辑问题,一旦我有了更多的结果,就可以在上面列出它们。 – Josh

+0

josh不是在虚拟机上运行Memcache,而是尝试在基于* nix的机器上运行它,然后运行比较测试。 Memcache主要在* nix系统上运行。 Windows端口已经使它在Windows环境中工作。这并不是说它在将Windows用作主机时表现出最佳性能。另外,如果您尝试了下面的Prathul的建议,您能否告诉我们结果? – user20358

回答

1

为什么不测试windows版本的memcached,以便比较苹果和苹果?当你在虚拟机上运行其中一个虚拟机时,你也会得到额外操作系统的开销。

+0

1.从memcached的windows端口“这个端口不被官方memcached团队支持”。 2.我知道额外的操作系统会有额外的开销,但是如果put是0-1ms而get是14-15ms,那么看起来开销可能与软件而不是VM层相关。 3.在工作中,任何解决方案都将存放在虚拟机中,所以开销始终存在。 – Josh

3

我看到你已经在Appfabric上启用了本地缓存。当启用本地缓存时,缓存客户端在本地存储对该对象的引用。这使对象在客户端应用程序的内存中保持活动状态。当应用程序请求对象时,缓存客户端首先检查对象是否驻留在本地缓存中。如果是这样,那么对该对象的引用将立即返回而不与服务器联系。如果它不存在,则从服务器检索该对象。将对象存储在本地缓存中后,应用程序将继续使用这些对象,直到它们失效,而不管这些对象是否由缓存群集中的另一个客户端更新。出于这个原因,最好使用本地缓存来处理不经常更改的数据。

由于您启用了本地缓存,因此该对象立即返回而不与群集联系。如果您的数据频繁更改并且对陈旧数据的容忍度较低,则应禁用本地缓存。在禁用本地缓存的情况下,在Windows Server Appfabric 1.1上尝试相同的测试。

+0

我认为这是正确的答案! – Calvin