如何在Gremlin Java远程客户端中增加超时设置?

如何在Gremlin Java远程客户端中增加超时设置?,java,gremlin,amazon-neptune,Java,Gremlin,Amazon Neptune,我们在使用GremlinJava的应用程序上执行负载测试时遇到以下异常。 如何解决这个问题 例外情况: java.lang.IllegalStateException: org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException: java.lang.RuntimeException: java.lang.RuntimeException: java.util.concurrent.TimeoutException:

我们在使用GremlinJava的应用程序上执行负载测试时遇到以下异常。 如何解决这个问题

例外情况:

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
“等待可用主机时超时”-这无疑是客户端和数据库之间的连接问题。关于调试海王星的连接有很多答案,请尝试一下。首先,您可以从您的客户机上尝试以下操作吗

telnet <db-endpoint> <db-port> 
telnet
你很可能会看到它正在等待建立连接,这证实了这个假设

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

“等待可用主机时超时”-这无疑是客户端和数据库之间的连接问题。关于调试海王星的连接有很多答案,请尝试一下。首先,您可以从您的客户机上尝试以下操作吗

telnet <db-endpoint> <db-port> 
telnet
你很可能会看到它正在等待建立连接,这证实了这个假设

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


我也遇到了同样的错误。Neptune不会将错误堆栈跟踪记录到日志中。当cpu>60%的使用案例时,我的TimeoutException就来了。cpu会达到这么高,因为有很多连接到db

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

默认情况下,集群保留最多8个websocket连接的池(如果未提及)。当
maxPoolSize
设置为100时,我得到了
TimeoutException

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

我也面临同样的错误。Neptune不会将错误堆栈跟踪记录到日志中。当cpu>60%的使用案例时,我的TimeoutException就来了。cpu会达到这么高,因为有很多连接到db

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

默认情况下,集群保留最多8个websocket连接的池(如果未提及)。当
maxPoolSize
设置为100时,我得到了
TimeoutException

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

你读了吗?是否存在配置问题?每次都是这样吗?它早些时候起作用了吗?你遗漏了太多细节…在我看来,你的客户甚至无法连接到端点。客户端正在超时等待会议。您是否在VPC内运行代码(可能来自EC2实例)?如果不是的话,您是否使用类似ELB的工具来处理该转换?也许是SSH隧道?请提供更多关于配置的信息。希望它能帮助你取得进步。嗨,Sandeep,我只是想看看你是否还有其他关于这篇文章的后续文章。太多的连接导致了这个问题。我们已经向AWS寻求支持。如果我有答案,我会更新。@Sandepkumarjakkaraju您收到AWS支持部门的答案了吗?我也时断时续地面临同样的问题。你读过吗?是否存在配置问题?每次都是这样吗?它早些时候起作用了吗?你遗漏了太多细节…在我看来,你的客户甚至无法连接到端点。客户端正在超时等待会议。您是否在VPC内运行代码(可能来自EC2实例)?如果不是的话,您是否使用类似ELB的工具来处理该转换?也许是SSH隧道?请提供更多关于配置的信息。希望它能帮助你取得进步。嗨,Sandeep,我只是想看看你是否还有其他关于这篇文章的后续文章。太多的连接导致了这个问题。我们已经向AWS寻求支持。如果我有答案,我会更新。@Sandepkumarjakkaraju您收到AWS支持部门的答案了吗?我也时断时续地面临同样的问题。谢谢你的回答。但我们已经增加了删除查询到空数据库的超时时间。因此,我们排除了这种可能性。您是否按照上述建议尝试telnet?问题还在吗?谢谢你的回答。但我们已经增加了删除查询到空数据库的超时时间。因此,我们排除了这种可能性。您是否按照上述建议尝试telnet?问题还在吗?