我有两个dc集群,其中一个dc从Cassandra 2.2.19升级到3.11.13。目前我注意到Cassandra 3.x DC升级后报告的cql超时。版本2.x上的其他dc没有此问题。Cassandra 3.11.13版本是否需要增加超时值?以下是当前配置的超时值,必须执行哪些操作才能解决此问题?
错误代码:
ReadTimeout:来自服务器的错误:code=1200 [Coordinator node timeout waiting for replica nodes' responses] message=“Operation timeout- received only 3 responses.”info=“接收到的响应”:3,'required_responses':4、“一致性”:'QUORUM'}
Casssandra.yaml配置文件中的默认值:
read_request_timeout_in_ms:5000 range_request_timeout_in_ms:10000 write_request_timeout_in_ms:10000 counter_write_request_timeout_in_ms:5000 cas_contention_timeout_in_ms:1000 truncate_request_timeout_in_ms:60000 request_timeout_in_ms:10000 cross_node_timeout:假
1条答案
按热度按时间u0njafvf1#
这里可能的问题是,Cassandra 2.2和3.11使用不同的CQL二进制协议的默认版本。我怀疑有两件事正在发生:
1.应用程序指定的协议版本对于3.11来说太低,因此无法访问它们。
1.应用程序没有指定“本地”数据中心,导致在所有节点上尝试
QUORUM
,而不管DC如何。如果应用程序协商的二进制协议版本对于3.11来说太低,则它无法到达这些节点。在看上面的消息时,我怀疑它是#2。确保应用指定了本地DC,并在
LOCAL_QUORUM
而不是QUORUM
上运行查询。和/或强制使用Cassandra 2.2和Cassandra 3.11的协议版本,如this page所示。这也取决于您使用的驱动程序的版本。我的猜测是协议v2正在协商中,Cassandra 3.11不支持。
另一个潜在的问题是,您的应用程序仍然使用Thrift。在这种情况下,请记住Cassandra 3.11默认Thrift为“disabled”,因此您需要启用它。