设备端发消息,EMQX无法收到

业务架构是:设备端—EMQX—业务服务器;
EMQX版本:5.1.1;
问题描述:最近几天出现了一个偶发问题,设备端开机连接MQTT后,正常定时发送业务消息,设备端开发人员进行了抓包,从抓包数据看可以收到ACK,但是通过EMQX的web控制台无法看到这个客户端,使用日志追踪功能也看不到任何消息。有4个设备最近一周出现类似问题

没看到就是没连上

但是设备端研发同事打印了pcap文件,上面显示PSH和ACK,就强调连上emqx了。所以两边争议点就在这里。还有,问题发生时设备端有发生重连,现在就是不知道是哪边的问题

那建议可以在 EMQX 服务器上 tcpdump

1、在EMQX上tcpdump有几个问题点 (1)EMQX有3个节点,是每个节点上都要tcpdump吗?(2)有上百个设备都连在EMQX上,等到问题发生时,tcpdump怎么能定位到问题设备?
2、设备端收到ACK能否说明已经连到EMQX了?
2、在设备端有网络的情况下,连接到emqx不断发生重连,会有哪些诱因?

烦请空闲时解答下

是的。

tcpdump 不会骗你的,没找到就是没连上。你 3 个节点,前面应该还有 nginx,或者 haproxy,在那上面做 tcpdump 也行。

上百个设备应该还算少的吧。而且你是可以在 tcpdump里面指定只 dump 指定 ip 的包的。

不清楚你说的是哪里的 ack,如果是 mqtt 的 connect ack 包里是 0,那就是连上了。

我猜不出来。得看日志。

source里面的ip是服务器,这样可以说明连上了吗

这没办法确定,你要把它转成mqtt包看 wireshark自带的