Gremlin 控制台不断返回错误"Connection to server is no longer active"



我试图运行一个Gremlin查询,通过Gremlin控制台向顶点添加一个属性。

g.V().hasLabel("user").has("status", "valid").property(single, "type", "valid")

我经常遇到这样的错误:org.apache.tinkerpop.gremlin.jsr223.console.RemoteException: Connection to server is no longer active

此错误发生在查询运行一到两分钟后。

我尝试了一些简单的查询,比如g.V().limit(10),它运行良好。由于受影响的顶点数超过400万,不确定它是否因超时问题而失败。

我还试着把它分成小批量:g.V().hasLabel("user").has("status", "valid").hasNot("type").limit(200000).property(single, "type", "valid")它在最初的几个批次中成功了,但又开始失败。

对于更新数百万个顶点,有什么建议吗?

您采取的精确方法可能会因您使用的后端图形数据库和存储以及所使用硬件的容量而异。

Gremlin Server运行的硬件的容量(以CPU数量为单位,最重要的是以内存为单位(也将是一个因素,查询超时值的设置也是一个因素。

要在Gremlin中做到这一点,如果你有一种方法可以轻松地识别不同的顶点范围,你可以将其拆分为多个线程,每个线程都进行批量更新。如果你展示的例子代表了你的实际需求,那么在这种情况下这可能是不可能的。

同样,一些图数据库提供了批量加载功能,这通常是进行大批量更新的好方法,但在这里可能不是一个选项,因为您需要根据属性的当前存在(或不存在(进行基本上有条件的更新。

如果没有更多关于您的数据模型和硬件等的信息,最好的答案可能是做两件事:

  1. 使用较小的限制。也许一开始试着跑5公里,甚至只跑1公里,然后继续努力,直到找到一个可靠的最佳点
  2. 增加查询超时设置

您可能需要进行实验,以找到适合您的环境的最佳点,因为硬件的容量肯定会在这种情况下以及您如何编写查询中发挥作用。

相关内容

最新更新