我的设备突然异常离线,不能自动登录了,日志显示如下:
2023-11-02T02:49:58.947327+08:00 [info] xxxx file: emqx_connection.erl, line: 552, mfa: {emqx_connection,terminate,2}, msg: terminate, pid: <0.5940.52>, reason: {shutdown,expired}
各位谁知道这是什么原因?
expired 是会话过期的意思,这个设置了 Session Expiry Interval
了,且离线超过这个时间后触发的,也就是这条日志之前,你的设备就已经断开了,你需要看看这之前的日志
我使用的是4.4.1开源版
默认的会话过期时间是 2h, session_expiry_interval = 2h
, 从你最后两条日志来看,中间也正好间隔两个小时,所以就是会话过期导致被踢掉了。
然后从 4.4.1 的代码来看,会话过期有两个原因:
- 心跳超时,EMQX 主动断开了连接
- 客户端主动断开了连接
因为 4.4.1 的代码问题,并没有打印出网络断开的信息,所以这个问题暂时没法确定是哪个原因导致的。
客户端是有自动重连机制的,在reason: {shutdown,expired}之后,应该还可以连接上才对,根据日志判断,之后就在也不连接了