版本: 5.8.0 (Open Source)
操作系统: debian 6.1.0
如图,设备在断开连接之前数据看着都是好的,但是不知道为什么突然断开了连接,并接着重连,我想知道原因,但是只显示了einval,这个是什么意思,是什么原因导致的连接断开,详情请查看附件
ww_3355111100000001.zip (66.3 KB)
版本: 5.8.0 (Open Source)
操作系统: debian 6.1.0
如图,设备在断开连接之前数据看着都是好的,但是不知道为什么突然断开了连接,并接着重连,我想知道原因,但是只显示了einval,这个是什么意思,是什么原因导致的连接断开,详情请查看附件
ww_3355111100000001.zip (66.3 KB)
einval 是socket 不可用:
大概率是
对已关闭的套接字进行操作:
{error, closed}
,但在某些情况下,底层的 inet
驱动或操作系统层面可能返回 einval
。特别是在套接字刚刚关闭,其资源尚未完全释放时。最有可能的是远端(可能是设备,也可能是网络不稳把 2 边都断开了)关闭了socket,emqx 还没有感知到,还在尝试给这条socket发信息,就会出现这个错。
有没有可能是速率的原因,我看上边还有一条警告是速率的限制
我觉得不太可能,如果可以很好重现的话,可以用 tcpdump 在 两端都抓包看看
不太好重现,因为我们观察到的现象是,每次掉线频率都固定在两小时左右,有时是两小时30分钟,有时是两小时10分钟
也就是说这个问题,不是emqx这边主动断开的连接,如果emqx这边主动断开,肯定是会有日志记录的,大概率设备端的问题是吧