0

我有一个问题,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 毫秒,这是巨大且不合理的。

有谁知道为什么会这样?我能做些什么来改善这个时间?

4

2 回答 2

2

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

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

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

其次,您报告的平均时间为 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

于 2011-08-14T21:40:45.713 回答
0

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

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

佩里

于 2011-08-31T22:54:34.373 回答