长时间运行一段时间后,会掉线一些mqtt连接

问题描述:现在有一个这样的产品,如图,回收箱上有个平板,平板上的app使用了mqtt,设备远程控制,在线离线都用的是mqtt来下发指令。现在遇到了一个问题,设备运行一天后到晚上就会掉线一部分mqtt客户端,有没有什么排查思路与方法

emqx版本:4.2.7
emqx服务所在的服务器配置 CentOS 7.9 64位 2核(vCPU) 4GiB 3Mbs带宽
平板app应用使用的uniapp + mqtt.js 3.0.0
emqx运行情况

  • 看看 emqx 日志里有没有错误
  • 使用 emqx listener 命令查看掉线原因码的统计信息。



  • 第一个截图 ssl_error 错误是 TLS 握手失败,可能是非 TLS 客户端连到了 TLS 端口(8883) 去了。
  • 第二个截图 emqx_frame, parse_utf8 这个错误可能是因为 WebSocket 客户端连到 MQTT 端口(1883 或者 8883)去了。
  • 第三个截图,cannot subscribe due to Not authorized 是说 ACL 没过。

这些应该都不是你说的长连接断开的原因,前面两种情况都是没连上。

1.现在确实没有用到tls
2.客户端用的mqtt.js 用的wx://xxx:8083/mqtt这种方式连接的
3.现在mqtt暂时没有设置连接认证用户名密码