MQTT over TCP协议&&对比TCP网络性能测试&&模拟弱网测试&&测试中遇到的问题

云端自己测试---

MQTT正常外网压测数据---时延diff/ms如下图:

MQTT实车外网非弱网压测数据---时延diff/ms如下图:

MQTT外网弱网压测数据

MQTT实车弱网压测数据

TCP正常外网压测数据

TCP正常实车外网压测数据

TCP弱网外网压测数据

TCP弱网实车外网压测数据

平行驾驶工程场景

一、信号网络好的情况,tcp响应时延会有高的情况,mqtt正常,mqtt稳定性强
1.1 11:04:40 掉自驾( 强网络区域,tcp 连接异常 , mqtt正常 ),移动三格,电信两格

exit parallel unexpect! [;ctrl cmd hz = 14 < 15 check interval = 800ms]

1.2 11:06:21 掉自驾( 强网络区域,tcp 连接异常 , mqtt正常 )移动三格,电信三格

exit parallel unexpect! [;no pong in last 1720ms, now = 1702177579390 lastPongTime = 1702177577637]

二、弱网情况下,tcp响应时延高时 , mqtt响应时延较好,mqtt抗弱网能力强
2.1 11:00:50 掉自驾 ( 弱网区域,tcp 连接异常 , mqtt正常 )

exit parallel unexpect! [;no pong in last 1720ms, now = 1702177248310 lastPongTime = 1702177246557]

2.2 11:02:21 掉自驾 ( 弱网区域,tcp 连接异常 , mqtt正常 )

exit parallel unexpect! [;ping latency = 403ms > 350ms] 

三、强弱网情况下,tcp 连接断开,mqtt也连接断开,网络极差时mqtt与tcp一致。
3.1 10:11 路过强弱网区域,掉自驾,车的长连接也掉了

四、在网络不佳的情况下,TCP时延和MQTT时延都会出现波动
4.1 10:04--10:08 路过弱网区域,无掉自驾, 视频与指令有延迟高, mqtt也有时延高。

测试总结

       1. 信号网络好的情况,tcp响应时延会有高的情况, mqtt正常---mqtt稳定性强。
       2. 弱网情况下,tcp响应时延高,mqtt响应时延较好---mqtt抗弱网能力强。
       3. 强弱网情况下,tcp 连接断开,mqtt也连接断开---网络极差时mqtt与tcp一致。
       4. 在网络不佳的情况下,TCP时延和MQTT时延都会出现波动。

车云联合测试---

测试总结: 按照分位置统计的话Mqtt也优于TCP

测试过程中遇到问题总结

        1. mqtt校时跟控车指令延迟高

        原因:单线程处理mqtt跟tcp的协议数据包解析;当触发mqtt接收的时候需要同时处理tcp的心跳跟校时以及控车指令,recv接口获取缓冲区数据阻塞导致!具体测试demo后续补充!本质是跟后端业务逻辑未很好的拉齐。

        2. mqtt客户端失联后服务端没有处理断开连接的策略,导致连接一直在,客户端重连失败

        

          

         此种情况客户端主动断开一下也行,但工程上客户端服务端都需要处理这种情况

        

结论

在弱网场景下,MQTT和TCP的网络性能表现会有所不同。下面是它们在弱网环境中的对比:

  1. 连接建立:MQTT使用基于TCP的协议栈,因此在弱网环境中,与TCP相比,MQTT的连接建立可能需要更长的时间。TCP协议在建立连接时会进行三次握手,这可能在高延迟或丢包较多的网络中引起连接延迟和失败。

  2. 传输效率:在弱网环境中,MQTT相对于原生TCP可能具有更好的传输效率。MQTT协议通过使用轻量级的消息头和可压缩的消息负载,可以减少数据包的大小和传输延迟。此外,MQTT支持发布/订阅模型,可以减少不必要的网络流量。

  3. 断线重连:TCP在弱网环境中的一个优势是它具备自动的断线重连机制。当网络连接中断并重新恢复时,TCP会自动尝试重新建立连接。相比之下,MQTT协议并没有内置的断线重连机制,你需要在应用层实现断线重连逻辑。

  4. 丢包处理:TCP协议在传输过程中具有可靠性保证和自动的重传机制。在弱网环境中,TCP会尽力确保数据的可靠传输,通过自动重传丢失的数据包来保证数据的完整性。MQTT作为基于TCP的协议,也能从TCP的可靠性机制中受益。

综上所述,虽然MQTT基于TCP,但它通过一些优化和特性,如轻量级的消息格式和发布/订阅模型,可以在弱网环境中表现得更好。但需要注意的是,MQTT的性能仍然受限于底层TCP连接的建立和维护。在实际应用中,在弱网环境下选择适当的协议还需综合考虑网络条件、实时性要求和数据传输的可靠性等因素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ปรัชญา แค้วคำมูล

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值