问题描述
设备掉线后,emqx控制面板显示客户端处于无连接状态,点击右边的清除session按钮,无法清除导致客户端设备重启的时候一直无法连接mqtt
环境信息
- EMQ X 版本:4.2
- 操作系统及版本:linux
设备掉线后,emqx控制面板显示客户端处于无连接状态,点击右边的清除session按钮,无法清除导致客户端设备重启的时候一直无法连接mqtt
这可能是一个 BUG。你能试试下面的命令,我们看看现在运行的情况吗?
./bin/emqx remote_console
进入 emqx 控制台ets:tab2list(emqx_channel).
然后回车,你会得到类似下面的这样的输出(emqx@127.0.0.1)3> ets:tab2list(emqx_channel).
[{<<"Mjk4NzQzODc2NDMyODU2MDI0NzQyMTY1NTE3OTI3MDU1MzG">>,
<0.4223.0>}]
<0.4223.0>
process_info(<0.4223.0>,current_stacktrace).
然后回车;查看这个链接的当前的调用堆栈。对这几个卡住的客户端都执行下这个过程,然后把最后打印出来的堆栈贴来看看呢
所以这个问题有得到解决吗
{current_stacktrace,[{gen,do_call,4,
[{file,“gen.erl”},{line,167}]},
{gen_server,call,3,[{file,“gen_server.erl”},{line,219}]},
{emqx_cm,takeover_session,2,
[{file,“emqx_cm.erl”},{line,267}]},
{emqx_cm,‘-open_session/3-fun-1-’,5,
[{file,“emqx_cm.erl”},{line,222}]},
{emqx_cm_locker,trans,3,
[{file,“emqx_cm_locker.erl”},{line,46}]},
{emqx_channel,process_connect,2,
[{file,“emqx_channel.erl”},{line,434}]},
{emqx_connection,with_channel,3,
[{file,“emqx_connection.erl”},{line,553}]},
{emqx_connection,process_msg,3,
[{file,“emqx_connection.erl”},{line,293}]}]}
这个打印出来的堆栈可以帮忙看看吗?
在 4.3上 遇到同样的问题,只能重启 ,
请问 如何解决 ?
嗨,各位 最新版本的 4.3 已经修复了这个问题
目前不重启的解决方案就是杀掉对应的进程
我就是 在 4.3 上 出现的问题,不知道怎么修复的
应该是最新版本的4.3,你的版本是4.3,但是不一定是最新版本,看小版本
不重启的解决方案:
进入emqx控制台
emqx remote_console
找到卡死的进程,杀掉
ets:tab2list(emqx_channel).
process_info(<0.2125.0>).//对应进程id
exit(<0.2125.0>,shutdown).
赞 是这个意思