Cassandra nodejs驱动程序在节点移动后超时

时间:2016-04-07 09:56:42

标签: node.js cassandra datastax-enterprise datastax-startup

我们在群集中使用vnodes。

我注意到当节点的令牌空间发生变化时(自动在vnodes上,在修复期间或在添加新节点后进行清理),datastax nodejs驱动程序会获得大量“操作超时 - 仅收到X响应”几分钟。

我尝试使用ONE和LOCAL_QUORUM一致性。

我想这是因为协调员在移动后没有点击正确的节点。这似乎是一种逻辑行为(数据被移动)但我们真的想解决这个特殊问题。

你们有什么建议我们应该做些什么来避免这种情况?有自定义重试策略?缓存?改变一致性?

行为举例

当我们看到这个时:

4/7/2016, 10:43am   Info    Host 172.31.34.155 moved from '8185241953623605265' to '-1108852503760494577'

我们看到了那些高峰:

{
  "message":"Operation timed out - received only 0 responses.",
  "info":"Represents an error message from the server",
  "code":4608,
  "consistencies":1,
  "received":0,
  "blockFor":1,
  "isDataPresent":0,
  "coordinator":"172.31.34.155:9042",
  "query":"SELECT foo FROM foo_bar LIMIT 10"
}

1 个答案:

答案 0 :(得分:1)

  

我想这是因为协调员在移动后没有点击正确的节点。这似乎是一种逻辑行为(数据被移动),但我们真的想解决这一特定问题。

事实上,在添加新节点时,会有令牌范围移动,但Cassandra仍然可以使用令牌范围提供读取请求,直到扩展完全结束。所以你所面临的行为非常可疑。

如果您重现此错误,请激活查询跟踪以缩小问题范围。

错误也可能与负载较重的节点有关,而且响应速度不够快