MQTT 开放基准测试规范:全面评估你的 MQTT Broker 性能
引言
我们很高兴地宣布:由 EMQ 发起的面向全球的 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 |
详细的图表如下:
未来规划
在上文我们使用了 NanoMQ 作为示例,但实际上这套测试规范对所有采用了 MQTT 协议的 Broker 都是适用的。我们也将对其进行持续的迭代和完善,并计划后续推出一个用于 MQTT 基准测试的工具。
欢迎感兴趣的读者查看我们的 GitHub 主页了解更多信息,期待来自大家的宝贵意见和贡献。