Get neighbors failed 错误

我建集群导入几十亿的数据后,节点offline,storage cpu占用率100%;
过了几个小时,各个节点自动online了,但质询Go查询时,会碰到[ERROR (-8)]: Get neighbors failed 多执行几次,才返回正常结果。
感觉集群会有个逐步预热的过程……
是哪里可能有问题呢?

您好,感谢您的提问。
请问你们的集群是多少个存储节点,几副本?
配置文件用的是不是 etc下面以 .production 为后缀名的文件。

我建集群导入几十亿的数据后,节点offline,storage cpu占用率100%

storeage没有异常的情况下(程序挂掉),大量导入的情况下,storage有可能一直在处理数据导致没有及时发心跳给metad,你可以把metad配置文件里面的heartbeat_interval_secs设置大一样(默认是3秒),看会不会还有offline的问题。

Get neighbors failed 多执行几次,才返回正常结果。
前面压力大的情况,有可能也会导致storage直接心跳接受不及时,导致发生选举,你可以执行SHOW HOSTS 看下Leader count的数量,看是不是发生过多次选举,这种情况,你可以把在storage的配置文件里面添加

--raft_heartbeat_interval_secs=30
--raft_rpc_timeout_ms=500

原因可能是集群状态恢复正常后,graph这边拿到的集群中storage的leader还不是最新的,所以会请求失败。代码有做简单的预热,前提是集群的选举已经ok,你这个情况可能是由于前面心跳异常导致集群发生选举,但是还没完成的时候就进行查询,所以这个时候会出现失败几次后成功。麻烦提供下请求的graphd的日志和storaged的日志,已经SHOW HOSTS的截图。

1 个赞