环境信息
- EMQX 版本:4.2.9
- 操作系统及版本:linux
- 其他
问题描述
设备连接broker 保留会话cleansession的为false,过期时间2小时,但是设备掉线后2小时会话还存在,而且通过控制台手动clean session提示超时,设备无法重新连接
配置文件及日志
没有日志信息
设备连接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