设备连接断开后无法重连

环境信息

  • EMQX 版本:4.2.9
  • 操作系统及版本:linux
  • 其他

问题描述

设备连接broker 保留会话cleansession的为false,过期时间2小时,但是设备掉线后2小时会话还存在,而且通过控制台手动clean session提示超时,设备无法重新连接

配置文件及日志

没有日志信息

可能是插件什么的卡住了连接进程。你用了mysql 之类的插件吗?

BTW: 升级到 4.3.17 以后的版本,可以在卡住的情况下强行杀掉进程。

使用mysql做的鉴权,麻烦问下现在有办法临时解决吗?谢谢!

检查一下 MySQL 那边有没有执行很慢的 SQL,定位一下 MySQL 的问题(比如被锁住,或者索引问题等)。

然后重启一下 MySQL 服务。

mysql应该没问题,因为其他设备都是可以正常鉴权连接的。目前用到的插件:emqx_auth_mysql、emqx_coap、emqx_dashboard、emqx_management、emqx_recon、emqx_retainer、emqx_rule_engine、emqx_telemetry、emqx_web_hook

可以通过下面的办法,调查一下。

进入 erlang 控制台:(注意不能 Ctrl + C,不然 emqx 会终止!!)

emqx attach

然后:

spawn(fun() -> etop:start([{output, text}, {interval, 5}, {lines, 20}, {sort, msg_q}]) end).

看看有哪些进程的消息队列过长。然后:

etop:stop().

最后:

Ctrl + D