负载平衡 - RabbitMQ:服务器检测信号必须失败 3 次才能断开连接



我们有一个 HA RabbitMQ 集群 (v3.2.x),其中包含两个位于负载均衡器后面的节点。 我们的客户配置为使用 300 秒的心跳。 大多数时候,一切都按预期工作。

但是,如果客户端的连接断开(例如客户端的 NIC 断开连接),我们注意到(通过 TCPDump/wireshark)RabbitMQ 节点在关闭连接之前将尝试 3 条心跳消息(在我们的例子中将近 15 分钟)。 为什么? 为什么不在一次失败后关闭它?

有没有办法在 RabbitMQ 服务器上更改此行为? 还是我们必须将心跳缩短到更小的东西,例如 5 秒或 10 秒,以便更快地关闭连接,想法?

相关问题...

查看 TCPDump(在负载平衡器上捕获),我想知道为什么 LB 在响应代理的 RabbitMQ 服务器心跳请求时没有从死客户端接收 TCP-ACK 时不关闭连接? 事实上,LB 会尝试多次发送请求(当然,永远不会收到响应)。 LB 假设连接已被丢弃并关闭整个会话(包括与 RabbitMQ 节点的连接)是否有意义?

看起来 RabbitMQ 配置为在终止连接之前允许两次丢失的检测信号。 但是,它会等到需要发送下一个心跳才能断开连接,这就是它看起来需要错过 3 个心跳的原因。

检测信号 1(无响应)等待 检测信号

2(无响应)等待 检测信号 3 终止

MQ 中有一个轻微的错误(它发送第 3 个心跳但立即终止连接),但它并没有真正影响任何事情。

相关内容

  • 没有找到相关文章

最新更新