Couchbase:Tap Queue中卡住了20k个项目

时间:2013-12-18 14:30:54

标签: memcached couchbase

我们目前正在评估couchbase作为memcached的替代品。我们的设置如下:

php - > localhost moxi - > couchbase bucket(总桶大小= 10240 MB(2048 MB x 5个节点,副本计数为1)) 服务器有16GB RAM并支持SSD。

我们在大约400次操作/秒时插入并且几天没有问题。当我们达到约1300万件物品时。我们发现我们忘记在testsetup中实现删除功能,并且许多密钥没有设置过期。

重新开始,我们通过网络界面冲洗了桶。我们的问题开始了。 我们开始看到我们有临时主机,后退和轻敲队列充满了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。 *只有失败的人有大量的“每秒临时OOM”,但其他三人有0。

这种现象似乎消失了,如果我们通过禁用couchbase写入来降低服务器的负载,那么两个软件项目中的一个写入couchbase。 但是如果我们再次启用写入,大约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:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs 在这四个小时后,它立即开始发送垃圾邮件(也许,因为负载增加很多,因为在晚上我们的页面产生比早上/中午更多的负载)以及这个“来自mccouch的错误”:

Tue Dec 17 16:42:30.875343 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs
Tue Dec 17 16:42:36.493317 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - 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:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs
Tue Dec 17 16:43:31.906178 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs
Tue Dec 17 16:43:36.913045 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs
Tue Dec 17 16:43:42.919114 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs
Tue Dec 17 16:43:48.920354 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs
Tue Dec 17 16:43:54.924017 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs
Tue Dec 17 16:44:00.928572 CET 3: (CENSORED) TAP (Producer) eq_tapq:replication_ns_1@10.65.20.12 - Suspend for 5.00 secs

我们不知道这里发生了什么,为什么这个失败的节点似乎拒绝每个复制并抛出此错误。 你有什么想法吗?

感谢您对科隆的所有帮助和问候,

安迪!

3 个答案:

答案 0 :(得分:0)

看到您只想删除Bucket中的所有项目,您是否尝试过删除并重新创建存储桶?

这将比flush更快 ,因为flush实际上需要为存储桶中的每个文档发送删除请求。

目前我在文档中找不到它,但我认为Flush并不是最新版本的推荐。

答案 1 :(得分:0)

你不是在写什么是你的操作系统。如果是Linux,请尝试检查运行Couchbase的用户的最大打开套接字数量。检查文件/etc/security/limits.conf。

检查Linux的命令是:ulimit -Hn。

希望有所帮助。

丹尼尔

答案 2 :(得分:0)