发布信息emqx acl校验返回Not authorized

环境信息

  • EMQX 版本:4.2.14
  • 操作系统及版本:centos7.9
  • 其他 鉴权用的是http mqttauth acl缓存条数是1024,缓存时间是10m

问题描述

压力测试运行一段时间后,发现一个问题,有的设备端发送消息后emqx没有收到(2分钟的时间段内),查看设备日志是发送成功的,查看http auth模块也没有打印接收日志,怀疑是不是走缓存了,最后想不应该,因为缓存10m已过了(日志是从第一次打印过了10m钟是12分种设备发送的),最后查看emqx日志:“[warning] <<“thing-SM8HG2W3”>>@172.21.23.48:51329 [Channel] Cannot publish message to eap/SM8HG2W3/J-J12-SCGP-MZ-0001-10/event/PRODUCT_PARA_COLLOCT_UNIVERSAL due to Not authorized.” 奇怪了,怎么突然没有权限了,http auth模块校验代码应该是通过的,,过2分钟后就好了。。。。

配置文件及日志

首先是推荐升级一下,4.2版本已经超过维护周期了。
这个情况可能是设备的缓存已经超期,第二次从http auth取数据,取出来的结果是拒绝。可以尝试追踪一下设备的业务流程,参考这个文档

嗯嗯,不理解的是设置的10m的缓存时间,发生拒绝的是在12m-13m周期内,理论上不是下一个10m缓存就已经失效了吗

这种是偶发现象,很难复现,所以追踪也是很难得