为什么membase服务器的响应时间如此之慢?

时间:2011-08-14 12:24:25

标签: ruby-on-rails memcached membase

我有一个问题,即我的环境中的膜很慢。 我在rails 2.3.10 ruby​​ 1.8.7上运行了几个生产服务器(Passenger)。 这些服务器与集群中的2个成员机器进行通信。

每台膜机器都有64G的内存和一个100g的EBS,1G交换。

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

我的问题是:为什么?

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

服务器每秒执行2K-7K操作(对于群集)

来自membase(基于NewRelic)的响应时间平均为250毫秒,这是巨大且不合理的。

有人知道为什么会这样吗? 我能做些什么才能改善这段时间?

2 个答案:

答案 0 :(得分:2)

很难立即用手头的数据说出来,但我想我有一些你可能希望深入研究的问题。

首先,使用membase的统计数据显示大量的背景提取?这是“每秒磁盘读取次数”的Web UI统计信息。如果是这样,那可能是更高延迟的罪魁祸首。

您可以在manual中详细了解统计信息和大小调整,尤其是有关统计信息和群集设计注意事项的部分。

其次,你平均报告250毫秒。这是滑动平均值还是整体平均值?你有最大的第90次或第99次延迟吗?当大多数请求(例如,来自RAM的不需要磁盘提取的请求)实际上非常快时,一些异常磁盘提取可以给你一个很大的平均值。

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

我预计这一切都在一个地区,但值得仔细检查,因为这些延迟听起来像WAN延迟。

最后,还有一个更新的Ruby gem,向后兼容Fauna。 Couchbase,Inc。一直致力于向上游添加Fauna。如果可能,您可能想尝试这里引用的gem: http://www.couchbase.org/code/couchbase/ruby/2.0.0

答案 1 :(得分:0)

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

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

佩里