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

从智能家居到工业互联网,从车联网到城市级感知网络, 物联网正让万物“对话”重塑生活。每天有数亿台设备和应用程序正在通过物联网系统发送和接收数据。面对海量设备及其产生的高速数据流,如何做好以 MQTT 为代表的物联网协议性能测试显得尤为重要。今天,我们来聊聊科学开展大规模 MQTT 性能测试的实践与方法。

01 MQTT 的工作原理

MQTT 是一种基于 TCP/IP 协议的即时通讯协议,采用发布-订阅模式。发布者发送消息,订阅者接收他们感兴趣的消息,代理服务器则负责将消息从发布者传递给订阅者。发布者和订阅者都是 MQTT 客户端,它们只能与 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 性能测试关键指标

监控指标 描述 预期趋势与说明
实际连接数 成功建立并保持的MQTT连接数 目标是在尽可能高的数值上稳定保持
连接成功率 成功连接数 / 尝试连接数 接近100%为佳,下降则预示达到瓶颈
平均连接时间 完成TCP+MQTT握手的时间 会随连接数增加而上升,急剧上升预示瓶颈
CPU使用率 Broker进程的CPU占用 初期随连接数线性增长,后期因系统调度开销可能非线性飙升
内存使用率 Broker进程的内存占用 核心指标,通常与连接数成 线性正相关 ,每个连接都有固定内存开销,这是最常见的瓶颈
网络连接数 操作系统层面的网络连接数(netstat, ss) 应与MQTT连接数一致
网络带宽 网络接口的流入/流出流量 流量很小,主要由心跳包维持,但总量不可忽视(e.g., 100万连接 * 微小心跳包)
系统文件描述符 Broker进程和系统使用的FD数 必须确保系统级和进程级的FD限制远大于目标连接数

05 测试工具推荐

区别于多数传统性能测试工具仅以 HTTP 为核心场景,优测全链路压力测试平台针对 MQTT 协议深度定制,相比常见的通用压测工具,优测在 MQTT 场景的独特优势体现在:

真正的“千万级并发”能力

通过弹性编排的压力机集群,支持同时维持千万级长连接与复杂QoS组合

测试数据准备极简

一键上传设备ID、鉴权凭据等信息即可作为测试数据直接使用,省去手工构造数据与脚本拼接的时间,缩短准备周期到分钟级。

深度可视化的报告

区别于普通工具简单罗列指标,优测压测报告提供深度的可视化分析与洞察,错误原因聚类排序及检索,性能基线及报告对比,直观展示性能瓶颈。

性能监控指标“一屏贯通”

无需另行搭Prometheus等监控栈,优测平台采集压力机与被测集群的CPU、内存、网络等系统负载数据,并与压测指标时间对齐,一个平台完成压测与观测。

弹性与成本友好

按需横向扩展压力机,跨云多地域发压,精细化控制连接密度与消息大小,优化带宽与资源成本。

立即体验

填写申请表单,即可免费预约优测全链路压力测试工具的演示与体验,还可以收获最新功能动态和使用指导!


本文未注明其它来源的内容,其版权归优测云服务平台所有,未经允许不得转载本文内容。如需转载本文,请在显著位置注明出处(优测云服务平台,以及文章链接:https://utest.21kunpeng.com/home/topic/mqtt