Cassandra操作超时

操作超时 – 只收到0个响应。',info:'表示来自服务器的错误信息',代码:4608,一致性:1,收到:0,blockFor:1,isDataPresent:0,…

我每天都会得到这个错误,试图在我的cassandra集群上执行SELECT查询。 我们在m1.large aws实例上有一个3节点的集群。 他们大部分时间都是成功的,但每隔一段时间我们就会得到上述的错误。 我们还没有生产,所以桌子都很小。 我们没有任何超过几千行的表,并且相同的查询在其他时间完成。 提高时间不是一个选项,我不相信它会解决问题(查询应该是短的,错误中的查询是不一样的每次)

这可能是一些连接在节点或networking问题之间陈旧? 什么是testing这些最好的方法? 我也只在客户端看到这个错误,在cassandra日志中有没有我应该看到的地方?

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

看起来您正在查询一致性级别为“ONE”,因此只有1个持有数据的副本需要在服务器上的cassandra.yaml文件中configuration的read_request_timeout_in_ms内响应协调程序(默认值为5秒),但没有副本在这段时间内作出了回应。

超时可能发生,你的应用程序应该准备好根据你的喜好来处理它们(平坦化失败,重试,增加复制因子使其不太可能,等等)

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

  1. 增加您正在查询数据的密钥空间的复制因子。 如果您的复制因子是1,则依赖于1个节点可用于响应特定分区的查询。 将RF增加到3将使您的应用程序更好地适应性能不佳的节点或节点。
  2. configuration你的RetryPolicy重试读取取决于你如何行为。 nodejs-driver的默认值是只重试一次,只有在received > blockFor (在你的情况下不是这样)。
  3. 增加cassandra.yaml中的read_request_timeout_in_ms 。 我会劝阻这个,但5000毫秒应该是绰绰有余,除非你有一个糟糕的configuration/环境/查询。