本月初在设备没有大批量增加的情况下,频繁出现connection congested错误。平均每日提示报警10次左右。这个问题是什么导致的,该怎么解决。该客户端使用共享订阅,每秒流入消息量大概在150左右。
emqx版本为5.0.15,绝大部分设备qos为0,部分设备qos为2. qos0消息不是不需要确认。为什么会拥塞
EMQX 在客户端的 TCP socket 中仍有 send_pend
即待发送的数据时,才会认定 连接忙
可以看看系统调优相关的配置
发送队列是空的,为什么有待发送的数据呢?这种情况是服务端的问题还是broker的问题?后台收到消息延迟极高,有时mqtt收到消息后1分钟。后台才收到消息。
不是发送队列
是 TCP driver 还有数据没吐到对端,可能的原因比较多
比较有有可能的是,对端从 tcp receive buffer 里面取数据取的慢了,处理不过来就把 tcp receive window size 设小不让 EMQX 这边继续发 tcp 报文了。
另外你说的 “mqtt收到消息” 是指什么?mqtt 客户端还是你的某个监控服务?
就是有的时候,设备发送消息到mqtt了,mqtt监控能收到,但是订阅者收到消息可能在1分钟以后。可能就是因为你说的,拉取的数据慢了。
tcp receive buffer我有什么办法查看堆积的数据或者清空里面的数据吗