Mosquitto 有时会终止客户端连接

Mosquitto sometimes kills client connections

我正在使用 mosquitto 1.4.10。

我有一个客户端批量向同一主题发布多条消息(例如,每批 50 条消息)。客户端将每隔几秒发送一次每个批次(例如,每 5 秒)。发送 1 批或几批后,在下一批中,突然 mosquitto 将终止与客户端的连接。

provided a packet capture 从代理 运行 所在的机器上获得了我将在下面描述的行为。

客户端:172.16.0.114 蚊子经纪人:10.16.208.139(端口 8883)

下面的数字是抓包文件中的数据包编号。

1: Client connects to broker

17?: Client starts publishing first batch of messages

386: First batch of messages complete

387: Client starts publishing second batch of messages

388: Missing packet?

389: Mosquitto ACKs packet 387

390: Mosquitto starts spamming TCP DUP ACK packets for 387

549: Mosquitto stops spamming TCP DUP ACK packets for 387

550-578: Lots of retransmissions

784: Second batch of messages complete

785: Third batch of messages starts

788: Mosquitto sends FIN ACK, closing the connection (WHY?)

790-880: Mosquitto responds to remaining messages with RST

主要问题是为什么mosquitto在开始接收第三批消息后突然关闭连接。第 3 批开始时 mosquitto 中的日志在这里:

18:52:24
1491418344: OpenSSL Error: error:140E0197:SSL routines:SSL_shutdown:shutdown while in init
18:52:24
1491418344: Socket error on client admin, disconnecting.

这是由 mosquitto 中的错误引起的,如果尝试另一个非 SSL 连接,该错误会终止现有的 SSL 连接。具体来说,AWS 负载均衡器执行的 TCP 健康检查发送了一个小的 TCP 数据包,该数据包触发了错误以终止我的客户端连接。

查看 mosquitto github 上的问题。