einval断开重连的问题

版本: 5.8.0 (Open Source)
操作系统: debian 6.1.0

如图,设备在断开连接之前数据看着都是好的,但是不知道为什么突然断开了连接,并接着重连,我想知道原因,但是只显示了einval,这个是什么意思,是什么原因导致的连接断开,详情请查看附件
ww_3355111100000001.zip (66.3 KB)

einval 是socket 不可用:

大概率是

对已关闭的套接字进行操作:

  • 最常见的原因之一是尝试对一个已经关闭或正在关闭的套接字(Socket)执行操作(如发送、接收或设置选项)。
  • 这可能存在竞态条件(race condition),例如,一个进程关闭了套接字,而另一个进程几乎同时尝试使用该套接字。
  • 期望的错误可能是 {error, closed},但在某些情况下,底层的 inet 驱动或操作系统层面可能返回 einval。特别是在套接字刚刚关闭,其资源尚未完全释放时。

最有可能的是远端(可能是设备,也可能是网络不稳把 2 边都断开了)关闭了socket,emqx 还没有感知到,还在尝试给这条socket发信息,就会出现这个错。

有没有可能是速率的原因,我看上边还有一条警告是速率的限制

我觉得不太可能,如果可以很好重现的话,可以用 tcpdump 在 两端都抓包看看

不太好重现,因为我们观察到的现象是,每次掉线频率都固定在两小时左右,有时是两小时30分钟,有时是两小时10分钟

也就是说这个问题,不是emqx这边主动断开的连接,如果emqx这边主动断开,肯定是会有日志记录的,大概率设备端的问题是吧