Cassandra从2.2.19升级到3.11.13后出现读取超时错误

laawzig2  于 2023-10-18  发布在  Cassandra
关注(0)|答案(1)|浏览(174)

我有两个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:假

u0njafvf

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”,因此您需要启用它。

相关问题