0

我正在运行几个 titandb / gremlin-server.sh 实例,但它在高负载下不断耗尽内存。如何以及在哪里设置文档中提到的属性?

我想将#jsr223.groovy.engine.keep.globals 设置为幻像。

谢谢

缓存管理

如果 Gremlin Server 处理大量独特的脚本,缓存将超出 Gremlin Server 可用的内存,并且会出现 OutOfMemoryError。脚本参数化对解决这个问题大有帮助,对于这些情况,内存不足应该不是问题。如果这是一个问题,或者由于给定的用例(可能使用会话)而没有脚本参数化,则可以通过发出带有参数的脚本来更好地从客户端控制脚本缓存的性质帮助定义垃圾收集器应该如何处理引用。

该参数称为#jsr223.groovy.engine.keep.globals,有四个选项:

hard - 在 JVM 的生命周期内缓存中可用(未指定时为默认值)。

软 - 保留到内存“低”并且应该在抛出 OutOfMemoryError 之前回收。

弱 - 即使内存充足也会收集垃圾。

phantom - 被 ScriptEngine 评估后立即移除。

通过指定除 hard 以外的选项,应避免 Gremlin Server 中的 OutOfMemoryError。当然,这种方法的缺点是编译后的脚本可能会被垃圾收集并从缓存中删除,从而迫使 Gremlin Server 稍后重新编译。

4

1 回答 1

0

这是每个请求的功能:

通过发出带有参数的脚本来帮助定义垃圾收集器应如何处理引用,可以从客户端更好地控制脚本缓存的性质。

您必须使用调用的参数构造您的请求,并且在您的情况下 #jsr223.groovy.engine.keep.globals它应该具有值。phantom

对于 REST,我认为你会这样做:

curl -X POST -d "{\"gremlin\":\"100-x\", \"bindings\":{\"x\":1, \"#jsr223.groovy.engine.keep.globals\":\"phantom\"}}" "http://localhost:8182"
于 2015-10-22T10:57:23.427 回答