为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

函数式编程 2022-07-06 18:54:55
在对使用 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
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

“等待可用主机时超时” - 这肯定是您的客户端和数据库之间的连接问题。关于调试与 Neptune 的连接有很多答案,请尝试一下。首先,您可以在客户端计算机上尝试以下操作吗?

telnet <db-endpoint> <db-port>

您很可能会看到它正在等待建立连接,这证实了这一假设。

通常,建立与服务器的连接相当快。您需要担心的唯一超时是查询超时,而 Neptune 有一个参数组条目。

https://docs.aws.amazon.com/neptune/latest/userguide/parameters.html


查看完整回答
反对 回复 2022-07-06
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

我遇到了同样的错误。Neptunes 不会将错误堆栈跟踪记录到日志中。当 cpu > 60% 用例时,我的 TimeoutException 即将到来。由于与 db 建立了许多连接,cpu 会变得如此之高。

Gremlin 基于 websockets,多个请求可以通过同一个通道复用和使用。添加maxInProcessPerConnectionmaxSimultaneosUsagePerConnection确实帮助我将错误率降低到 0%。这些参数设置将在一个连接中多路复用的进程数。在我的例子中,大约有 50 名工作人员同时读/写。我观察到,对于我的用例,将值设置为 32 会导致 CPU 使用率最低。下面是我现在要解决的集群属性。

默认情况下,如果未提及,Cluster 会保留一个最多 8 个 websocket 连接的池。TimeoutExceptionmaxPoolSize设置为100时,我得到了。

                .addContactPoint(uri)
                .port(port)
                .serializer(Serializers.GRAPHBINARY_V1D0)
                .maxInProcessPerConnection(32)
                .maxSimultaneousUsagePerConnection(32)
                .maxContentLength(10000000)
                .maxWaitForConnection(10)
                .create()


查看完整回答
反对 回复 2022-07-06
  • 2 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信