如何增加 Gremlin Java Remote 客户端的超时设置?

在对使用 Gremlin Java 的应用程序执行负载测试时,我们遇到了异常。如何解决这个问题?

例外:

java.lang.IllegalStateException: org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException: java.lang.RuntimeException: java.lang.RuntimeException: java.util.concurrent.TimeoutException: Timed out while waiting for an available host - check the client configuration and connectivity to the server if this message persists
        at org.apache.tinkerpop.gremlin.process.remote.traversal.step.map.RemoteStep.promise(RemoteStep.java:98 )
        at org.apache.tinkerpop.gremlin.process.remote.traversal.step.map.RemoteStep.processNextStart(RemoteStep.java:65 )
        at org.apache.tinkerpop.gremlin.process.traversal.step.ut


函数式编程
浏览 227回答 2
2回答

慕标琳琳

“等待可用主机时超时” - 这肯定是您的客户端和数据库之间的连接问题。关于调试与 Neptune 的连接有很多答案,请尝试一下。首先,您可以在客户端计算机上尝试以下操作吗?telnet&nbsp;<db-endpoint>&nbsp;<db-port>您很可能会看到它正在等待建立连接,这证实了这一假设。通常,建立与服务器的连接相当快。您需要担心的唯一超时是查询超时,而 Neptune 有一个参数组条目。https://docs.aws.amazon.com/neptune/latest/userguide/parameters.html

沧海一幻觉

我遇到了同样的错误。Neptunes 不会将错误堆栈跟踪记录到日志中。当 cpu > 60% 用例时,我的 TimeoutException 即将到来。由于与 db 建立了许多连接,cpu 会变得如此之高。Gremlin 基于 websockets,多个请求可以通过同一个通道复用和使用。添加maxInProcessPerConnection并maxSimultaneosUsagePerConnection确实帮助我将错误率降低到 0%。这些参数设置将在一个连接中多路复用的进程数。在我的例子中,大约有 50 名工作人员同时读/写。我观察到,对于我的用例,将值设置为 32 会导致 CPU 使用率最低。下面是我现在要解决的集群属性。默认情况下,如果未提及,Cluster 会保留一个最多 8 个 websocket 连接的池。TimeoutException当maxPoolSize设置为100时,我得到了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addContactPoint(uri) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.port(port) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.serializer(Serializers.GRAPHBINARY_V1D0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.maxInProcessPerConnection(32) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.maxSimultaneousUsagePerConnection(32) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.maxContentLength(10000000) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.maxWaitForConnection(10) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.create()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java