设备连接断开了,依然显示已连接,状态不正确

环境

  • EMQX 版本:4.47
  • 操作系统版本:centos8

设备连接断开了,依然显示已连接,状态不正确

下面几种情况会导致 Dashboard 仍然展示下线的客户端:

  • 设备掉线了但服务端没有收到 DISCONNECT,也没有收到 TCP 的 FIN 报文。FIN 收不到往往是因为网络问题。需要在 Keepalive 时间超时之后才会移除此连接的会话。

  • 你的设备如果是持久化的话(clean_session = true, 或者 session-expiry-interval 不是 0),即使网路断开也不会清除会话。

把你另外一个单子的图片贴过来:

你的会话过期时间是 0,所以应该是前面说的第一种情况。Keepalive = 30s,所以大概会在一分钟之内掉线。

如果超时没有掉线,那可能是出问题卡住了,你可以尝试手动踢下去。常见的原因是:

  • 使用了 webhook,卡在了 HTTP 请求上
  • 使用了 mysql 相关功能,卡在了 SQL 请求上。

要确定具体的原因,可以使用 emqx remote_console 进入 Erlang shell,然后使用 observer_cli:start(). 命令看当前 Erlang 进程的状态。

emqx remote_console 这个不懂啊 :innocent:


出现批量慢订阅怎么处理,高峰期时时间会到35s呢