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

问题描述 投票:0回答:1

我有两个dc集群,其中一个dc从Cassandra 2.2.19升级到3.11.13。目前,我注意到 Cassandra 3.x DC 升级后报告了 cql 超时。版本 2.x 上的另一个 dc 没有此问题。请问 Cassandra 3.11.13 版本是否需要比以前的设置增加超时值?以下是当前配置的超时值,必须做什么才能解决此问题?

错误:

ReadTimeout:来自服务器的错误:code=1200 [协调器节点等待副本节点响应超时] message="操作超时 - 仅收到 3 个响应。"信息={'received_responses': 3, 'required_responses': 4, 'consistency': 'QUORUM'}

Casssandra.yaml 配置文件中的超时值:

读取请求超时时间: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 截断请求超时时间:60000 request_timeout_in_ms: 10000 cross_node_timeout: false

cassandra cassandra-3.0 cassandra-2.1
1个回答
0
投票

这里可能的问题是 Cassandra 2.2 和 3.11 使用不同的默认版本的 CQL 二进制协议。我怀疑发生了以下两件事之一:

  1. 应用程序指定的协议版本对于 3.11 而言太低,因此无法访问它们。
  2. 应用程序未指定“本地”数据中心,导致无论 DC 如何,都会在所有节点上尝试
    QUORUM
    。如果应用程序协商的二进制协议版本对于 3.11 而言太低,则它无法到达这些节点。

在查看上面的消息时,我怀疑它是#2。确保应用程序指定本地 DC,并在

LOCAL_QUORUM
而不是
QUORUM
运行查询。和/或强制使用适用于 Cassandra 2.2 和 Cassandra 3.11 的协议版本,如此页面所示。

这还取决于您使用的驱动程序版本。我的猜测是协议 v2 正在协商中,而 Cassandra 3.11 不支持该协议。

另一个潜在问题是您的应用程序仍在使用 Thrift。在这种情况下,请记住 Cassandra 3.11 默认 Thrift 为“禁用”,因此您需要启用它。

© www.soinside.com 2019 - 2024. All rights reserved.