首页 > 解决方案 > Gremlin 驱动程序中的 idleConnectionTimeout

问题描述

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

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

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

我想知道有什么方法可以找出没有收到保持活动响应,或者我可以做一些配置,比如 Gremlin 服务器中的 IdleConnectionTimeout,让 gremlin 驱动程序意识到保持活动请求没有得到任何回复?

标签: gremlintinkerpoptinkerpop3gremlin-server

解决方案


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

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


推荐阅读