emqx broker不断超时

mqtt 是两台集群环境 版本V3.2.4.。 连接数一直在涨 当clinetid连接数达到40~50K时 。emqx的控制台报错

麻烦提供更详细的消息,比如 EMQX 日志、具体超时的报错情况

问题的原因已经确认是单个client 端 用户 ,创建的pub和sub主题,和连接数过多。导致broker server服务器的TCP链接暴涨 异常导致的。


1.现在需要的问题点是 怎么限制单个client端的链接数量

没太理解这句话的意思。单个 Client 一般不是只有只有一个 MQTT 链接么?

如果是链接数一直在增长,则可能需要排查客户端代码,看是否存在泄漏

是的 ,问题就是出在单个客户端。但因单个客户端导致了broker本身的TCP连接数异常升高。一般怎么去限制 因客户端的问题导致broker的异常

看下是否可以通过黑名单的功能把这个设备封掉

嗯。客户端我们是采用 用户名 密码认证的方式进行的。一个用户名被用在多个设备上,每个设备建立的链接clientid不一样,比如都满足这种规定的clientid({设备名}_{pub/sub}_随机数 比如clientid:devicea_pub_21asda) 实际上 我们想只禁用单个设备的的访问。现在的问题是
1.如果禁用是在broker控制台操作么?
2.broker 如果支持在多设备共用一个用户名的情况下 禁用有问题的设备?
3.以此案例我们想到的是限流: 监控并限制单个客户端向服务端建立的链接数。目前在broker没有找到相关配置项。

  1. 有黑白单功能;
  2. 不支持;5.6.0 之前所有的版本,只支持固定字符串的 ClientId,Username 和 IP 地址。所以达不到你这里的需求。5.6.0支持,按正则的方式来封禁
  3. 不支持。

客户端在物理上可能是一个设备。但是如果每次使用不同 ClientId 链接到 EMQX 的话,EMQX 是无法区分的。