emq鉴权与mysql连接不稳定,导致鉴权不稳定

环境信息

  • EMQX 版本:4.2.12-alpine-amd64
  • 操作系统及版本:linux

问题描述

emq和mysql之间网络连接不稳定 ,每隔一段时间就会出现连接丢失,这就导致了emq查询ACL规则时失败,然后给mqtt客户端返回了订阅失败。

配置文件及日志


emqx.log.zip (132.6 KB)

我们觉着,由于访问 MySQL 失败导致的 ACL deny 是正常行为。

mqtt客户端是github.com/eclipse/paho.mqtt.golang
mqtt客户端因为acl鉴权失败,不会返回报错信息,这个怎么解决呢?现在很困惑,有解决办法不?谢谢

您好?请问问题是否已经解决?如果尚未解决,我会继续跟进它。

如果您使用了 QoS 1 或 QoS 2 消息,并且是 MQTT 5.0 版本,那么在鉴权失败时 PUBACK 和 PUBREC 报文中的 Reason Code 将会指示失败的原因。由于未授权导致发布失败对应的十六进制原因码应该是 0x87。

已经解决了谢谢,请问下如果某个用户触发了connect请求,但client_id一样,会导致其中一个请求不断重连,是否有哪种参数?,比如最大重连次数限制,因为不限制的话,反复请求broker,会带来很大的压力

emqx.conf 中有一个配置项 flapping_detect_policy,它的作用是将在指定时间内上下线超过指定次数的客户端封禁一段时间。

但应该并不太适合你的这个场景,因为这会导致所有使用这一 Client ID 的客户端都无法登陆。建议还是从源头入手,避免出现多个客户端使用相同 Client ID 的情况。

但是现在我相同的client_id先后请求broker,会反复会话接管,这是为啥呢?两个相同的client_id,先后请求订阅emqx,会反复报错142原因码(会话接管)

好的,我们在新的帖子中继续跟进吧。这个帖子请允许我将它标记为已解决。

好的,辛苦