将Cassandra升级到3.11.3后,code = 1200错误

时间:2018-09-14 14:30:23

标签: cassandra cassandra-3.0

我刚刚继承了一个系统,该系统具有3个节点,其中一个数据中心中的2个具有2的复制因子,而另一个数据中心中的1个具有1的复制因子。该系统从Cassandra 3.9升级到Cassandra 3.11.3。自升级以来,cqlsh中的所有查询均返回错误

ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'consistency': 'LOCAL_QUORUM'}

谁能建议可能导致此问题的原因,或者我应该在哪里寻找问题的原因?

编辑: 我以1的一致性重试了查询,但仍然收到错误

ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'}

1 个答案:

答案 0 :(得分:0)

评论时间过长...

可能是由某些原因引起的。

1-最大的分区有多大?我将通过以下检查:

bin/nodetool tablestats yourKeyspaceName.ablog | grep "partition maximum"

如果返回的结果是两位数的GB范围,则您有麻烦。

2-是否有墓碑?您可以使用类似的命令进行检查:

bin/nodetool tablestats yourKeyspaceName.ablog | grep "tombstones"

如果返回3或4位数字,则可能是个问题。

3-降级到3.11.2 。 3.11.2和3.11.3使用相同的SSTable格式。这只是关闭二进制文件的问题。下载/卸载3.11.2,将conf dir从3.11.3目录移入,应该没问题。

我只建议这样做,因为您可能会遇到CASSANDRA-14672

4-LOCAL_QUORUM w / RF = 2 正如我在评论中所提到的,在LOCAL_QUORUM处以RF <3进行查询与在ALL处进行查询没有什么不同。 Cassandra计算定额(多数)如下:

QUORUM =(RF / 2)+ 1 =(2/2)+ 1 = 2(副本需要响应)

严重的是,您这样做并没有获得任何好处。只有当RF等于或大于3时,才有意义:

QUORUM =(RF / 2)+ 1 =(3/2)+ 1 = 2(副本需要响应)

实际上,在RF = 2的QUORUM查询会伤害您,因为您不能容忍单个节点出现故障。