2011-08-14 36 views
0

我有一个问题,membase在我的环境中速度很慢。 我在rails上运行几个生产服务器(Passenger)2.3.10 ruby​​ 1.8.7。 这些服务器与集群中的2个membase机器进行通信。为什么membase服务器的响应时间太慢?

membase机器每个都有64G内存和一个100g EBS连接到它们,1G交换。

我的问题是membase的响应时间非常慢,而且实际上是所有应用程序生命周期中最慢的部分。

我的问题是:为什么?

我使用的rails gem是memcache-northscale。 membase服务器是1.7.1(最新)。

服务器2K-7K OPS之间做每秒(为群集)

从Membase的响应时间(基于NewRelic的)是在250毫秒平均这是巨大的和不合理的。

有谁知道为什么会发生这种情况? 我能做些什么来改善这个时间?

回答

2

很难立即用手头数据说出来,但我想我有几件事情你可能希望挖掘,以缩小问题的可能范围。

首先,你的统计数据与membase显示大量的后台提取?这是在“每秒磁盘读取次数”的Web UI统计信息中。如果是这样,那就是潜伏期较长的可能罪魁祸首。

您可以在manual中阅读有关统计信息和大小的更多信息,特别是有关统计信息和群集设计注意事项的章节。

其次,你平均报告250ms。这是一个滑动平均数,还是总体?你是否有类似最大90分或最大99分的延迟?当大多数请求(例如,不需要磁盘读取的RAM)实际上相当快时,一些外部磁盘读取可以给你一个大的平均值。

您的系统是否遍布可用区域?你使用什么样的实例?客户端和服务器是否位于同一亚马逊AWS区域中?我怀疑第一个答案可能是“是”,这意味着在使用最近测量的xlarge实例时大约需要1.5ms的开销。如果你在给定的方法中同步和串行地进行大量提取,这可能很重要。

我期望它都在一个地区,但值得仔细检查,因为这些延迟听起来像广域网延迟。

最后,有一个更新的Ruby gem,向后兼容Fauna。 Couchbase,Inc.一直在努力在上游加入Fauna。如果可能的话,你可以试试这里引用的宝石: http://www.couchbase.org/code/couchbase/ruby/2.0.0

+0

的问题是可用性区域。一旦我将所有服务移到同一个区域,它就像魅力一样。现在membase是36ms平均,这是非常好的。 – KensoDev

0

你也想看看在客户端运行Moxi。通过访问Membase,您需要通过代理(称为Moxi)。默认情况下,它安装在服务器上,这意味着您可以向其中一台没有密钥的服务器发出请求。 Moxi会去得到它......但是,你会把网络流量翻倍。

在客户端安装末席会消除这种额外的网络流量:http://www.couchbase.org/wiki/display/membase/Moxi

佩里

相关问题