如何开展大规模 MQTT 性能测试,稳定承载亿级设备同时在线?

从智能家居到工业互联网,从车联网到城市级感知网络, 物联网正让万物“对话”重塑生活。每天有数亿台设备和应用程序正在通过物联网系统发送和接收数据。面对海量设备及其产生的高速数据流,如何做好以 MQTT 为代表的物联网协议性能测试显得尤为重要。今天,我们来聊聊科学开展大规模 MQTT 性能测试的实践与方法。
01 MQTT 的工作原理
MQTT 是一种基于 TCP/IP 协议的即时通讯协议,采用发布-订阅模式。发布者发送消息,订阅者接收他们感兴趣的消息,代理服务器则负责将消息从发布者传递给订阅者。发布者和订阅者都是 MQTT 客户端,它们只能与 MQTT 代理服务器通信。
图:物联网传感器的 MQTT 发布和订阅模型
MQTT 发布/订阅模式的特点
区别于传统的客户端-服务器模式,使用 MQTT 协议来传输数据,只需要建立一次 TCP 连接,然后就可以通过 MQTT 协议来传输数据,不需要每次都重新建立连接和发送头部信息,因此可以大大减少网络带宽的占用和连接的不稳定性。同时,MQTT 协议支持不同的 QoS 等级,可以确保数据的可靠传输,即使网络连接不稳定,也可以保证数据不会丢失。
02 MQTT 性能测试的重要性
大多数性能测试工具都是为 HTTP API 和传统 Web 流量设计的,而 MQTT 作为一种有状态、事件驱动的协议,其行为则有所不同:
必须跨数千个客户端处理持久连接
基于主题的消息分发增加了架构的复杂性
服务质量等级、保留消息和遗嘱消息引入了影响性能的变量
因此,大规模测试 MQTT 系统不仅仅关乎稳健性,还关乎可靠性、成本效益,以及避免在高风险环境中出现生产故障,忽视 MQTT 性能测试也可能导致企业过度配置基础设施。
03 常见的 MQTT 协议测试场景
i 并发连接上限
在高并发场景下,MQTT 的长连接机制需要占用并消耗 MQTT Broker 的一定资源,需要通过性能测试,验证现网环境在有限资源下能够承受的连接上限。
ii 消息吞吐量测试
测试在不同发布/订阅模式下(扇入/扇出场景)消息传输的性能,从而展示 QoS 级别和有效负载大小等因素对生产环境系统性能的实际影响
iii MQTT Broker 选型测试
物联网行业存在诸多的 Broker,如 Mosquitto、EMQX、HiveMQ 等等,通过选型测试,可以帮助企业全面评估技术支持能力
04 如何开展规模化的 MQTT 性能测试?
测试方法
测试一:连接数上限测试
目标:探测 Broker 集群的最大稳定连接数
方法:逐步增加模拟设备连接数,直至无法建立新连接或大量已有连接异常断开
压测参数:根据业务需求模拟用户数,摸高模式,爬坡时间 2 分钟
指标要求:连接成功率 ≥ 99.9%,连接建立后保持稳定,无异常断开
测试二:消息吞吐量测试
目标:测量不同 QoS 模式下的消息吞吐量和延迟
方法:分别配置 QoS 0、QoS 1、QoS 2 三种模式,使用有效载荷大小为 1KB 的消息进行一对一通信,逐步提高消息发布速率来增加工作负载,并在每种工作负载下运行 5 分钟
压测参数:梯度增压模式,起始百分比 20%,单次增幅 10%
指标要求:请求失败率<=0.1%, CPU 负载低于 80%,上下行带宽不超过网络带宽的 80%
测试三:峰值流量稳定性测试
目标:测量业务峰值(如智慧城市交通早晚高峰、智能家居规律性交互等)场景的系统稳定性
方法:分别验证 QoS 0、QoS 1、QoS 2 三种模式,通过浪涌压力模型,模拟真实业务场景瞬时峰值 TPS
压测参数 :浪涌模式,起始百分比 10%,起始保压时长 30 秒,峰值百分比 100%,峰值保压时长 60 秒
指标要求:CPU 负载低于 80%,上下行带宽不超过网络带宽的 80%
MQTT 性能测试关键指标
05 测试工具
这里介绍几款常用的可用于 MQTT 协议性能测试的工具
JMeter
使用 JMeter 需要安装一个 MQTT JMeter 插件,优点是开源免费,缺点是有一定门槛和学习成本,需要自行搭建测试环境。
XMeter Cloud
该工具是 EMQ 基于 JMeter 提供的 MQTT 性能测试云服务。础版用于快速体验 XMeter Cloud 测试服务。该版本支持最高 1000 连接以及最高 1000/秒消息吞吐,适用于小规模公网 MQTT 测试。专业版提供了企业级的性能测试支持,不限连接数和消息吞吐,适用于大规模的物联网测试场景。
优测全链路压力测试工具
优测全链路压力测试平台针对 MQTT 协议深度定制,该工具适合企业级、大规模测试,支持千万级并发能力,无需另行搭 Prometheus 等监控栈,优测平台采集压力机与被测集群的 CPU、内存、网络等系统负载数据,并与压测指标时间对齐,一个平台完成压测与观测。
本文未注明其它来源的内容,其版权归优测云服务平台所有,未经允许不得转载本文内容。如需转载本文,请在显著位置注明出处(优测云服务平台,以及文章链接:https://utest.21kunpeng.com/home/topic/mqtt)
版权声明: 本文为 InfoQ 作者【优测云服务平台】的原创文章。
原文链接:【http://xie.infoq.cn/article/b54ebe5109194e867c5b149d4】。文章转载请联系作者。







评论