2011-08-14 148 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

佩裏

相關問題