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

Gremlin console keeps returning "Connection to server is no longer active" error

我尝试 运行 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

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

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

我也试着把它分成小批: g.V().hasLabel("user").has("status", "valid").hasNot("type").limit(200000).property(single, "type", "valid") 前几批成功,然后又开始失败。

更新百万顶点有什么建议吗?

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

Gremlin 服务器的硬件容量 运行 就 CPU 数量而言,最重要的是内存,查询超时值的设置也是一个因素。

要在 Gremlin 中执行此操作,如果您有办法轻松识别不同的顶点范围,则可以将其拆分为多个线程,每个线程执行批量更新。如果您展示的示例代表了您的实际需要,那么在这种情况下这可能是不可能的。

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

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

  1. 使用较小的限制。也许一开始尝试 5K 甚至只是 1K,然后从那里开始工作,直到找到可靠的甜蜜点。
  2. 增加查询超时设置。

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