【发布时间】:2014-04-16 10:05:01
【问题描述】:
我正在测试 Couchbase Server 2.5`。我有一个包含 7 个节点和 3 个副本的集群。在正常情况下,系统工作正常。
但是我在这个测试用例上失败了: Couchbase 集群提供 40.000 个操作,我在一台服务器上停止了 couchbase 服务 => 一个节点停机。在那之后,整个集群的性能就会痛苦地下降。它只能服务于 1.000 次以下的操作。当我点击故障转移时,整个集群恢复健康。
我认为当一个节点关闭时,只会影响部分请求。对吗?
而实际上,当一个节点宕机时,会对整个集群造成很大的影响?
更新:
我写了一个工具来负载测试使用 spymemcached。该工具创建多线程以连接到 Couchbase 集群。每个线程设置一个密钥并立即获取该密钥进行检查,如果成功则继续设置/获取另一个密钥。如果失败,则重试 Set/Get,如果失败 5 次则通过此密钥。
这是我设置/获取失败时的密钥日志。
2014-04-16 16:22:20.405 INFO net.spy.memcached.MemcachedConnection:由于在 {QA sa=/10.0.0.23:11234,#Rops=2, #Wops=0, #iq=0, topRop=Cmd: 1 Opaque: 2660829 Key: test_key_2681412 Cas: 0 Exp: 0 Flags: 0 Data Length: 800, topWop=null, toWrite=0, Interest=1}。这可能是由于身份验证失败。 OperationException:服务器:内部错误 在 net.spy.memcached.protocol.BaseOperationImpl.handleError(BaseOperationImpl.java:192) 在 net.spy.memcached.protocol.binary.OperationImpl.getStatusForErrorCode(OperationImpl.java:244) 在 net.spy.memcached.protocol.binary.OperationImpl.finishedPayload(OperationImpl.java:201) 在 net.spy.memcached.protocol.binary.OperationImpl.readPayloadFromBuffer(OperationImpl.java:196) 在 net.spy.memcached.protocol.binary.OperationImpl.readFromBuffer(OperationImpl.java:139) 在 net.spy.memcached.MemcachedConnection.readBufferAndLogMetrics(MemcachedConnection.java:825) 在 net.spy.memcached.MemcachedConnection.handleReads(MemcachedConnection.java:804) 在 net.spy.memcached.MemcachedConnection.handleReadsAndWrites(MemcachedConnection.java:684) 在 net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:647) 在 net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:418) 在 net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:1400) 2014-04-16 16:22:20.405 警告 net.spy.memcached.MemcachedConnection:关闭并重新打开 {QA sa=/10.0.0.23:11234,#Rops=2,#Wops=0,#iq=0,topRop =Cmd:1 不透明:2660829 密钥:test_key_2681412 Cas:0 Exp:0 标志:0 数据长度:800,topWop=null,toWrite=0,interested=1},尝试 0。 2014-04-16 16:22:20.406 WARN net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:丢弃部分完成的操作:Cmd:1 不透明:2660829 密钥:test_key_2681412 Cas:0 Exp:0 标志:0 数据长度:800 2014-04-16 16:22:20.406 警告 net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:丢弃部分完成的操作:Cmd:0 不透明:2660830 密钥:test_key_2681412 取消 2014-04-16 16:22:20.407 错误 net.spy.memcached.protocol.binary.StoreOperationImpl:错误:内部错误 2014-04-16 16:22:20.407 信息 net.spy.memcached.MemcachedConnection:由于异常处理 {QA sa=/10.0.0.24:11234、#Rops=2、#Wops=0、# 上的 memcached 操作而重新连接iq=0, topRop=Cmd: 1 Opaque: 2660831 Key: test_key_2681412 Cas: 0 Exp: 0 Flags: 0 Data Length: 800, topWop=null, toWrite=0, Interest=1}。这可能是由于身份验证失败。 OperationException:服务器:内部错误 在 net.spy.memcached.protocol.BaseOperationImpl.handleError(BaseOperationImpl.java:192) 在 net.spy.memcached.protocol.binary.OperationImpl.getStatusForErrorCode(OperationImpl.java:244) 在 net.spy.memcached.protocol.binary.OperationImpl.finishedPayload(OperationImpl.java:201) 在 net.spy.memcached.protocol.binary.OperationImpl.readPayloadFromBuffer(OperationImpl.java:196) 在 net.spy.memcached.protocol.binary.OperationImpl.readFromBuffer(OperationImpl.java:139) 在 net.spy.memcached.MemcachedConnection.readBufferAndLogMetrics(MemcachedConnection.java:825) 在 net.spy.memcached.MemcachedConnection.handleReads(MemcachedConnection.java:804) 在 net.spy.memcached.MemcachedConnection.handleReadsAndWrites(MemcachedConnection.java:684) 在 net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:647) 在 net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:418) 在 net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:1400) 2014-04-16 16:22:20.407 警告 net.spy.memcached.MemcachedConnection:关闭并重新打开 {QA sa=/10.0.0.24:11234,#Rops=2,#Wops=0,#iq=0,topRop =Cmd:1 不透明:2660831 密钥:test_key_2681412 Cas:0 Exp:0 标志:0 数据长度:800,topWop=null,toWrite=0,interested=1},尝试 0。 2014-04-16 16:22:20.408 WARN net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:丢弃部分完成的操作:Cmd:1 不透明:2660831 密钥:test_key_2681412 Cas:0 Exp:0 标志:0 数据长度:800 2014-04-16 16:22:20.408 警告 net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:丢弃部分完成的操作:Cmd:0 不透明:2660832 密钥:test_key_2681412 取消
【问题讨论】:
-
顺便说一句,7 节点集群上的 3 个副本可能是多余的,并且需要相对大量的资源来处理特定的工作负载。在 10 个节点以下,单个副本通常就足够了。