gremlin - Gremlin 驱动程序中的 idleConnectionTimeout
问题描述
我有一个在我的本地主机上运行的应用程序(gremlin 驱动程序在其上运行),一个在远程主机上运行的 gremlin 服务器,以及一个介于两者之间的负载平衡器。
我已经设置了 Gremlin 驱动程序的 keepAliveInterval 以保持我的本地主机和负载均衡器之间的连接打开,但不知何故连接仍然被丢弃。(负载均衡器中的超时间隔比我在 Gremlin 驱动程序中配置的 keepAliveInterval 大)。
我检查了日志,发现连接断开后,Gremlin 驱动程序仍在向负载均衡器发送保持活动消息,但它没有得到任何响应,也无法检测到它。
我想知道有什么方法可以找出没有收到保持活动响应,或者我可以做一些配置,比如 Gremlin 服务器中的 IdleConnectionTimeout,让 gremlin 驱动程序意识到保持活动请求没有得到任何回复?
解决方案
驱动程序的 keep-alive 过程并不是非常健壮,因为它对于服务器端的 keep-alive 来说有点冗余。驱动程序吞下与发送它自己的保持活动消息相关的异常,并且只会记录一条WARN
消息,因此您必须在日志中找到该消息以确定是否存在故障。
我不确定是什么让您的环境进入负载均衡器失去连接的状态。服务器和驱动程序一起工作以维持连接。当驱动程序空闲时,它会在超过之后发送保持活动keepAliveInterval
状态,这应该重置驱动程序和服务器的空闲状态。在服务器上,读取和写入空闲状态(分别由idleConnectionTimeout
和keepAliveInterval
)监控,并将向客户端发送保持活动状态。应该从“ping”(服务器或客户端)的任一端返回“pong”。我想知道如果“ping”不是来自客户端,负载均衡器的状态是否会终止连接?
推荐阅读
- javascript - 如何使用允许您在新选项卡中打开 chrome 设置的选项制作 chrome 扩展?
- amazon-s3 - 如何通过 S3 URI 对数据集和模型进行分类,但保留本地副本?
- firebase - 如何在不附加 storage.rules 和 firestore.rules 文件的情况下在 Firebase 主机上上传网站?
- c++ - 打开句柄响应因 IDE 运行和构建运行而异
- javascript - 用于输入值的 Javascript/Jquery 事件侦听器
- python - 来自 2 列数据框的 Python 递归函数
- javascript - 使用jquery ajax函数接收PHP数据并将其附加到anychart中
- azure-cosmosdb - 用于写入的 Cosmos db 高 RU
- python - np.argmax()中axis参数的作用是什么?
- c# - 我的游戏对象不会在统一 2d 中发生碰撞