【问题标题】:Mosquitto sometimes kills client connectionsMosquitto 有时会杀死客户端连接
【发布时间】:2017-04-06 23:42:58
【问题描述】:

我正在使用 mosquitto 1.4.10。

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

我在代理运行的机器上发送了provided a packet capture,它显示了我将在下面描述的行为。

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

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

1:客户端连接到代理

17?:客户端开始发布第一批消息

386:第一批消息完成

387:客户端开始发布第二批消息

388:丢失数据包?

389:Mosquitto 确认数据包 387

390:Mosquitto 开始为 387 发送垃圾邮件 TCP DUP ACK 数据包

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.

【问题讨论】:

  • 这似乎更可能是客户端或网络问题,而不是 Mosquitto 问题。或者托管 Mosquitto 的系统存在问题。您是否尝试过在 Mosquitto 本地运行客户端,看看效果是否不同。

标签: ssl openssl mqtt mosquitto


【解决方案1】:

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

请参阅mosquitto github 上的问题。

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多