业务架构是:设备端—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自带的