【问题标题】:Why is membase server so slow in response time?为什么 membase 服务器的响应时间这么慢?
【发布时间】:2011-08-14 12:24:25
【问题描述】:

我的问题是 membase 在我的环境中运行速度非常慢。 我在 rails 2.3.10 ruby​​ 1.8.7 上运行多个生产服务器(Passenger)。 这些服务器与集群中的 2 台 membase 机器通信。

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

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

我的问题是:为什么?

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

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

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

有人知道为什么会这样吗? 我可以做些什么来改善这个时间?

【问题讨论】:

    标签: ruby-on-rails memcached membase


    【解决方案1】:

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

    首先,您使用 membase 的统计数据是否显示大量后台提取?这是“每秒磁盘读取数”的 Web UI 统计信息。如果是这样,这可能是导致延迟较高的罪魁祸首。

    您可以在manual 中阅读有关统计信息和规模调整的更多信息,尤其是有关统计信息和集群设计注意事项的部分。

    其次,您报告的平均时间为 250 毫秒。这是一个滑动平均值,还是整体?您是否有诸如 max 90th 或 max 99th 延迟之类的东西?当大多数请求(例如,来自 RAM 的不需要磁盘提取的请求)实际上非常快时,一些外围磁盘提取可能会给您一个较大的平均值。

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

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

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

    【讨论】:

    • 问题是可用区。一旦我将所有发球移动到同一个区域,它就像魅力一样。现在 membase 平均为 36 毫秒,非常好。
    【解决方案2】:

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

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

    佩里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2017-01-06
      相关资源
      最近更新 更多