2013-12-18 31 views
1

我們目前正在評估couchbase作爲memcached替代品。我們的設置如下所示:Couchbase:20k項目卡在Tap Queue中

php - > localhost moxi - > couchbase存儲區(總存儲區大小= 10240 MB(2048 MB x 5個節點,副本數爲1)) 服務器有16GB RAM,並且支持SSD。

我們以大約400 ops/s的速度插入,幾天沒有問題。當我們達到約1300萬件物品時。我們發現我們忘記在我們的testsetup中實現刪除功能,並且很多密鑰沒有設置過期。

重新開始,我們通過web界面刷新存儲桶。這是我們問題開始的地方。 我們開始看到我們有臨時的奧姆,補償,並且龍頭隊列中充滿了20k個物品。排水和填充率幾乎相同。見所附截圖 Total TAP queue items 什麼也逮住了我們的眼球是節點4只有220K項目,其中每個人有大約1.39M Node overview 不知怎的,它看起來像複製搞砸了的東西,但即時通訊相對較新的couchbase。任何提示,建議? - 更多詳情,請參閱:http://www.couchbase.com/communities/q-and-a/20k-items-stuck-tap-queue#sthash.v9MxNnTk.dpuf

從羣集中刪除發生故障的節點後,問題在短時間內得到解決。 因此,現在有四個節點留在集羣中,幾個小時後,同樣的情況再次發生在另一個節點上。我們嘗試將現在失敗的節點設置爲FailOver狀態。這再次解決了問題,但在重新添加節點後,該節點上又出現了同樣的現象。

我們意識到其他的事情是: *三出四個節點的有成千上萬在他們的TAP複製隊列中的項目,而是一個 (「失敗的一個」)有0 *此外,四分之三的節點有回退率大約爲400,但其中一個(「失敗的」)爲0。 *只有失敗的人有大量的「Temp OOMs per second」,但其他三個都有0.

現象似乎消失了,如果我們通過禁用兩個寫入couchbase的軟件項目中的一個的couchbase-writes來降低服務器的負載。 但是,如果我們再次啓用寫入,約10分鐘後,我們可以看到這款在memcached.log失敗的節點上:

Tue Dec 17 12:29:05.010547 CET 3: (CENSORED) Received error[86] from mccouch for unknown 
Tue Dec 17 12:29:05.010576 CET 3: (CENSORED) Retry notify CouchDB of update, vbucket=277 rev=522 
Tue Dec 17 12:29:08.748103 CET 3: (CENSORED) Received error[86] from mccouch for unknown 
Tue Dec 17 12:29:08.748257 CET 3: (CENSORED) Retry notify CouchDB of update, vbucket=321 rev=948 
Tue Dec 17 12:40:17.354448 CET 3: (CENSORED) Received error[86] from mccouch for unknown 
Tue Dec 17 12:40:17.354476 CET 3: (CENSORED) Retry notify CouchDB of update, vbucket=303 rev=491 

此錯誤,那麼會發生約四小時內5次: Tue Dec 17 14:19:32.145071 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 並經過這四個分,這開始瞬間連同這個「錯誤從mccouch」濫發這個(也許,由於負載重增加,因爲晚上我們的頁面生成比早晨/中午更負載):

Tue Dec 17 16:42:30.875343 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:42:36.493317 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:43:25.239876 CET 3: (CENSORED) Received error[86] from mccouch for unknown 
Tue Dec 17 16:43:25.240052 CET 3: (CENSORED) Retry notify CouchDB of update, vbucket=296 rev=483 
Tue Dec 17 16:43:25.903997 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:43:31.906178 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:43:36.913045 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:43:42.919114 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:43:48.920354 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:43:54.924017 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 
Tue Dec 17 16:44:00.928572 CET 3: (CENSORED) TAP (Producer) eq_tapq:[email protected] - Suspend for 5.00 secs 

我們不知道這裏發生了什麼,爲什麼這個失敗節點似乎拒絕每一個複製並拋出這個錯誤。 你有什麼想法嗎?

感謝您的來自科隆的所有幫助和問候,

安迪!

回答

0

鑑於您只是想刪除Bucket中的所有項目,您是否嘗試過刪除並重新創建存儲桶?

這將是比沖水快,因爲沖洗實際上需要在桶發送刪除請求文件。

目前我無法在文檔中找到它,但我認爲Flush並非真正推薦使用最新版本。

0

你不寫什麼是你的操作系統。如果是Linux,則嘗試檢查運行Couchbase的用戶的最大開放套接字數量。檢查文件/etc/security/limits.conf。

在Linux上檢查的命令是:ulimit -Hn。

希望有所幫助。

丹尼爾