Gremlin 驱动程序中的 idleConnectionTimeout

idleConnectionTimeout in Gremlin driver

我的本地主机(运行 gremlin 驱动程序的主机)上有一个应用程序 运行,远程主机上有一个 gremlin 服务器 运行,两者之间有一个负载平衡器。

我已经设置了 Gremlin 驱动程序的 keepAliveInterval 以保持我的本地主机和负载平衡器之间的连接打开,但不知何故连接仍然断开。 (负载均衡器中的超时间隔大于我在 Gremlin 驱动程序中配置的 keepAliveInterval)。

我检查了日志,发现连接断开后,Gremlin 驱动程序仍在向负载均衡器发送保持活动消息,但它没有收到任何响应,也无法检测到它。

我想知道是否有任何方法可以找出未收到保持活动响应,或者是否有一些我可以做的配置,例如 Gremlin 服务器中的 IdleConnectionTimeout 让 gremlin 驱动程序实现保持活动请求没有得到任何响应?

驱动程序的保活过程不是非常健壮,因为它对服务器端的保活有点冗余。驱动程序吞下了与发送它自己的保持活动消息相关的异常,并且只会记录一条 WARN 消息,因此您必须在日志中找到该消息以确定是否存在故障。

我不确定是什么让您的环境进入负载平衡器失去连接的状态。服务器和驱动程序共同工作以维持连接。当驱动程序空闲时,它会在超过 keepAliveInterval 后发送一个保持活动状态,这应该重置驱动程序和服务器的空闲状态。在服务器上,读取和写入空闲状态被监视(分别由 idleConnectionTimeoutkeepAliveInterval )并且将向客户端发送保持活动状态。从 "ping"(服务器或客户端)的任一端应返回 "pong"。我想知道如果 "ping" 不是来自客户端,负载均衡器是否存在终止连接的状态?