白皮书
车联网设计与实现:搭建可靠、高效、符合行业需求的车联网平台 →

MQTT 开放基准测试规范:全面评估你的 MQTT Broker 性能

Chongyuan Yin
2023-4-21
MQTT 开放基准测试规范:全面评估你的 MQTT Broker 性能

引言

我们很高兴地宣布:由 EMQ 发起的面向全球的 MQTT 开放基准测试规范现已正式发布!

该测试规范包含了实用的典型使用场景、一套衡量 Broker 性能的主要指标,以及一个模拟负载和收集测试结果的工具,可以帮助开发者评估 MQTT Broker 的可扩展性和性能,从而选择最需要和合适的产品。

MQTT Broker 集群

客观实用的 MQTT 负载测试方法

发布/订阅模式下,MQTT Broker 是连接设备和传输物联网数据的核心。随着物联网的普及,处理海量设备及其产生的高速数据流充满了挑战,MQTT Broker 的可扩展性和性能也因此成为物联网解决方案的关键。

在这一背景下,EMQ 提出了这套 MQTT 开放基准测试规范,旨在提供一种客观且实用的 MQTT Broker 测试方法,它将通过以下主要优势简化 MQTT Broker 的负载测试:

提供开放实用的评估基准

尽管有许多研究论文和技术文章对 MQTT Broker 进行了评估和比较,但当前的基准测试通常只衡量一些特定的因素,并不能反映出大规模物联网应用的真实场景。而 EMQ 提供的 MQTT 开放基准测试规范则从多个方面进行全面评估,同时设计了对任何 Broker 都公平的场景,以此来建立一个客观中立的测试基准。

基于真实的使用场景和可行的度量标准

我们分析并解决了来自我们客户的大量实际测试需求,基于此提出了这套 MQTT 开放基准测试规范。我们相信它可以满足绝大多数的测试需求。

面向社区开放的全面基准测试

我们致力于围绕这套 MQTT 基准测试规范建立一个开放和协作的社区。随着社区贡献的各种使用场景不断增加,这套规范也将能更加准确地反映行业需求。欢迎与我们一起为 MQTT 协议建立一个全面的基准测试规范。

MQTT 开放基准测试规范的内容

第一版 MQTT 开放基准测试规范主要介绍了影响 MQTT broker 性能的关键因素,并定义了衡量可扩展性、可用性、延迟时间和计算资源成本的指标。

规范还将典型的使用场景分为连接、广播、点对点和上报,并包含了基于真实客户需求的实际用例。

此外,为了说明这些用例在基准测试中是如何应用的,我们提供了一些详细的基准测试结果的例子。

基准测试结果示例

为了展示一个实际的例子,下面我们将介绍一个使用 NanoMQ 作为 MQTT Broker 的广播用例和基准测试结果的详细情况。

在这个广播用例中,建立了 5 个发布者和 1000 个订阅者的连接(即为了“广播”的目的,订阅者比发布者多),并使用了 5 个主题进行发布/订阅。每个订阅者完成连接后,立即订阅所有 5 个主题。每个发布者完成连接后,都向一个独占的主题发送一个 16 字节的消息。发布者和订阅者都使用 QoS 1。每个发布者的发布速率是每秒 50 条消息,因此,总的预期订阅速率是每秒 250K 条消息。

在本次基准测试中,NanoMQ 部署在一个单节点上。配置详情如下:

部署 版本 操作系统 CPU 内存 云主机模型
单节点 NanoMQ 0.17.0 Ubuntu 22.04.1 amd64 16vCPUs 32 GiB c5.4xlarge (AWS)

本次基准测试使用了 XMeter 作为测试工具,它模拟了所有的设备连接和消息吞吐量,分析数据并生成指标报告。以下是一些重点指标:

实际消息速率 发布到订阅平均延迟(毫秒) CPU 使用率(用户+系统) CPU 平均使用率(用户+系统) 内存最大使用量 内存平均使用量
NanoMQ 250k 14.07 72% 70% 824M 685M

详细的图表如下:

MQTT Benchmark Result

未来规划

在上文我们使用了 NanoMQ 作为示例,但实际上这套测试规范对所有采用了 MQTT 协议的 Broker 都是适用的。我们也将对其进行持续的迭代和完善,并计划后续推出一个用于 MQTT 基准测试的工具。

欢迎感兴趣的读者查看我们的 GitHub 主页了解更多信息,期待来自大家的宝贵意见和贡献。

免费试用 EMQX 企业版
无限连接,任意集成,随处运行。
开始试用 →

推荐阅读

2022-1-18Jim Moen
MQTT 服务器安全性测试

本文将以 EMQX 为例,介绍如何使用模糊测试工具来发现 MQTT 服务器对协议实现上可能存在的缺陷和漏洞。