我正在使用mosquitto 1.4.10。
我有一个客户端批量发布多个消息到同一个主题(例如每批50个消息)。客户端将每隔几秒发送一批(例如,每5秒)。在发送了一个或几个批次后,在下一批中,突然mosquitto将终止与客户端的连接。
我在运行代理的机器上provided a packet capture显示了我将在下面描述的行为。
客户:172.16.0.114 Mosquitto经纪人:10.16.208.139(港口8883)
以下数字是捕获文件中的数据包编号。
1:客户连接到经纪人
17?:客户开始发布第一批消息
386:第一批消息完成
387:客户开始发布第二批消息
388:丢失数据包?
389:Mosquitto确认数据包387
390:Mosquitto开始发送垃圾邮件TCP DUP ACK数据包387 549:Mosquitto停止发送针对387的TCP DUP ACK数据包的垃圾邮件550-578:重播次数
784:第二批消息完成
785:第三批消息开始
788:Mosquitto发送FIN ACK,关闭连接(为什么?)790-880:Mosquitto使用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.
答案 0 :(得分:0)
这是由mosquitto中的一个错误引起的,如果尝试了另一个非SSL连接,它会杀死现有的SSL连接。具体来说,AWS负载均衡器执行的TCP运行状况检查是发送一个小的TCP数据包,触发了该错误以终止客户端的连接。
请参阅mosquitto github上的问题。