gpt4 book ai didi

node.js - Cassandra 操作超时

转载 作者:搜寻专家 更新时间:2023-10-31 22:47:17 24 4
gpt4 key购买 nike

操作超时 - 仅收到 0 个响应。', info: '表示来自服务器的错误信息', 代码:4608, 一致性:1, 收到:0, block 为:1, 存在数据:0, ...

尝试在我的 cassandra 集群上执行 SELECT 查询时,我每天都会遇到几次此错误。我们在 m1.large aws 实例上有一个 3 Node 集群。他们大部分时间都成功了,但每隔一段时间我们就会出现上述错误。我们还没有投入生产,所以所有的 table 都很小。我们没有超过几千行的任何表,其他时候相同的查询也能很好地完成。提高超时时间不是一个选项,我不相信它会解决问题(查询应该很短,每次错误中的查询都不一样)

这可能是 Node 之间的某些连接失效或网络问题?测试这些的最佳方法是什么?我也只在我的客户端看到这个错误,我应该在 cassandra 日志中的某个地方看到这个错误吗?

最佳答案

这实际上是从负责处理您的请求(也称为“协调器”)的 C* 服务器返回的错误。

看起来您正在使用“ONE”一致性级别进行查询,因此只有 1 个保存数据的副本需要在服务器上的 cassandra.yaml 文件中配置的 read_request_timeout_in_ms 内响应协调器(默认为 5 秒),但在该时间段内没有副本响应。

可能会发生超时,您的应用程序应该准备好根据您的偏好处理它们(完全失败、重试、增加复制因子以降低它发生的可能性等)

以下是您应该考虑的一些事项:

  1. 增加您从中查询数据的键空间的复制因子。如果您的复制因子为 1,则您依赖 1 个 Node 来响应对特定分区的查询。将您的 RF 增加到大约 3 将使您的应用程序对性能不佳的 Node 或出现故障的 Node 更具弹性。
  2. 配置您的 RetryPolicy根据您希望它的行为方式重试读取。 nodejs-driver 的默认设置是仅在 received > blockFor 时重试读取一次(在您的情况下不是)。
  3. 在您的 cassandra.yaml 中增加 read_request_timeout_in_ms。不过,我不鼓励这样做,除非您的配置/环境/查询不佳,否则 5000 毫秒应该绰绰有余。

关于node.js - Cassandra 操作超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38231621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com