关于mqtt:MQTT-性能测试入门常见测试场景和指标

3次阅读

共计 3196 个字符,预计需要花费 8 分钟才能阅读完成。

引言

在物联网畛域,存在大量资源受限的传感器和工业管制设施运行在低带宽且不稳固的网络环境中,这使得 MQTT 成为物联网场景下现实的音讯传输协定。因而,MQTT Broker 必须保障优异的性能和高度的可靠性,以满足物联网利用的要求。

在进行零碎测试之前,理解根本的测试场景和性能指标至关重要。在本文中,咱们将依据 EMQX 团队的测试教训提供一份详尽的阐明,它也同样实用于其余 MQTT Broker 测试。

名词解释

MQTT 协定:MQTT(Message Queuing Telemetry Transport)是一种基于公布 / 订阅模式的轻量级音讯传输协定。只管其名称中蕴含 ” 音讯队列 ” 一词,但它与音讯队列并无关联。该协定因其简洁、灵便、易于实现、反对 QoS 以及音讯体积小等特点而成为物联网畛域的首选协定。

性能测试:性能测试是指利用测试工具模仿各种失常、峰值或异样负载条件,以评估被测试零碎在各种性能指标上的体现。其目标在于验证零碎是否可能满足用户的冀望,并发现零碎中存在的性能瓶颈和问题。

常见的 MQTT 测试场景

MQTT Broker 次要有两种测试场景:

  • 并发连贯,包含并发连接数和连贯速率。
  • 音讯吞吐,包含音讯发送和接管的吞吐量,以及一些影响生产环境零碎性能的因素,如 QoS、有效载荷大小、主题通配符等。

在设计具体的性能测试场景时,特地是在进行 PoC 或部署前测试时,必须始终留神以下两点:

  • 尽量模仿实在生产环境中的应用状况。
  • 笼罩可能的峰值负载。

测试场景能够依照连贯和音讯吞吐量两个根本维度进行划分。

并发连贯测试

MQTT 连贯是一种基于 TCP 的长连贯。客户端首先与 MQTT Broker 建设 TCP 连贯,而后发送 MQTT 登录申请。连贯胜利建设后,客户端和 MQTT Broker 通过定期发送心跳包来维持连贯状态。所以建设和长期维持一个 MQTT 连贯是须要占用 MQTT broker 肯定资源的,在高并发场景下,这种长连贯会耗费 Broker 的大量资源。因而,通过性能测试,咱们能够评估 MQTT Broker 在无限资源下可能接受多少并发连贯。

另外,连贯速率(即每秒新增连接数)越高,须要的计算资源越多,在制订测试场景时须要思考这个因素,因为在有些场景下大量的设施会同时上线,在测试 broker 的能力或规划系统容量时须要这个指标。

在并发连贯测试中还要思考是否应用 TLS/SSL 加密传输,因为它会减少压力机和 MQTT Broker 额定的资源开销。在打算测试时,须要评估它对性能的影响。

综上所述,在 MQTT 并发连贯测试中,应该思考以下三种场景:

  1. 在固定的较低连贯速率下逐步提高并发连接数,测试零碎响应和资源耗费状况。这能够确定零碎在给定的硬件和网络资源下可能接受的最大并发数。
  2. 在给定的并发连接数下,测试不同连贯速率下零碎的响应和资源耗费状况。
  3. 在设计 1) 和 2) 时,辨别一般 TCP 连贯和 TLS/SSL 加密连贯。

音讯吞吐量测试

如前文所述,MQTT 是一种基于公布 / 订阅模式的音讯传输协定,它是一种异步协定,实现了公布 - 订阅 1 对 1,1 对多,多对 1 这 3 种类型,广泛应用于各种物联网场景。因而,音讯吞吐量测试应该涵盖以下三种场景:

  1. 1 对 1:发布者和订阅者的数量相等。对于每个发布者,有惟一一个订阅者订阅其公布的主题。也就是说,MQTT Broker 的音讯流入速率与流出速率雷同。
  2. 多对 1(上报):一种典型的物联网利用场景,有大量物联网设施作为发布者,但只有多数或单个订阅者,例如大量设施上报其状态或数据。
  3. 1 对多:即播送模式,大量客户端公布音讯,大量设施端订阅生产音讯,如管制端指令下发。

另外,在设计音讯吞吐量场景时,不要疏忽 QoS、音讯有效载荷大小、带通配符的订阅主题等因素。不同的 QoS 对负载测试的性能和资源耗费有很大影响。有效载荷大小能够依据理论应用状况确定。

其它场景

对于其它 MQTT 性能,如共享订阅、音讯转存到数据库或其余音讯队列(MQ)、海量主题订阅,以及诸如泛滥 MQTT 客户端同时连贯 / 断开等极其状况,能够依据理论需要进行设计并退出测试场景中。

性能度量指标

在设计好测试场景之后,还要制订度量指标来评估测试的胜利与否。

在性能测试中,指标个别能够分为两大类:利用零碎指标(比方 MQTT Broker 的指标)和计算资源指标。

  • 利用零碎指标与用户场景和需要无关,例如响应工夫(或提早)、并发量等。
  • 计算资源指标与硬件资源耗费无关。对于咱们探讨的 MQTT 测试来说,这些指标与其它软件性能测试的指标类似,例如 CPU、内存、网络、磁盘 I/O。

MQTT 零碎指标与测试场景严密相干,常见的指标如下表所示。

性能测试工具

大规模性能测试须要可能疾速、实在、稳固地模仿高并发、高吞吐场景,同时须要治理和保护泛滥机器和资源,抉择适合的测试工具能够起到事倍功半的成果。

EMQX 团队应用的是 emqtt_bench 和 XMeter 这两款性能测试工具。

emqtt_bench

emqtt_bench 是 EMQX 研发团队基于 Erlang 编写的一款 MQTT 协定性能测试工具。装置实现后,能够通过命令行来应用。

 用法:emqtt_bench pub | sub | conn

与其它工具相比,emqtt_bench 的长处是装置和应用简略,占用的计算资源较少。但它反对的场景比拟无限,须要联合其余监控工具测试指标数据

具体装置和应用办法请参考 https://github.com/emqx/emqtt-bench

XMeter

emqtt_bench 实用于开发阶段的疾速性能验证。如果要进行大规模测试或正式测试,咱们举荐另一款更业余的性能和负载测试工具 – XMeter。

XMeter 是一款基于 JMeter 的性能测试工具,它对 JMeter 的架构进行了革新,达到了齐全程度扩大的能力。可能轻松解决大量数据并执行高频测试。XMeter 不仅继承了 JMeter 的弱小性能,还减少了许多新的个性。在测试过程中,提供丰盛而实时的测试报告,让测试人员可能随时查看 MQTT 的要害性能指标,如吞吐量、响应工夫和成功率等。同时 XMeter 内置了监控零碎,能够实时监测 MQTT Broker 的资源耗费状况。

此外,XMeter 还提供了自动化和集中化的测试资源管理能力。测试机器(容器)在测试开始时主动创立,在测试完结时主动销毁。

在整个测试阶段,XMeter 将以图形形式实时显示 MQTT 性能指标和计算资源应用状况,如图 1~图 5 所示。

XMeter 使用指南

XMeter 有两个版本可供选择。

  • XMeter 本地私有化部署。适宜须要对测试环境进行全面管制,并恪守严格平安和数据隐衷规定的企业。应用该版本您须要:

    • 从 GitHub – emqx/mqtt-jmeter: MQTT JMeter Plugin 下载 XMeter 团队开发并开源的 mqtt-jmeter 插件。
    • 将 jar 文件放入 JMeter 目录中。
    • 依据利用场景,在 JMeter 中编写测试脚本,如图 6 所示。
    • 将脚本上传到 XMeter 并开始对 MQTT 进行性能测试。

  • XMeter Cloud:全托管的 MQTT 负载测试云服务,简略易用:

    • 一键发动 MQTT 性能测试,无需手动部署测试资源
    • 仅需 3 步实现 MQTT 测试配置,罢黜编写场景脚本的累赘
    • 测试资源云上按需创立,测试环境高度自动化,节俭大量工夫和人力老本

您只需在咱们的网站上注册一个收费试用账号,而后依照此文档的指引,即可开启您的 XMeter 之旅。

总结

在本文中,咱们探讨了几种常见的测试场景和用来评估 MQTT Broker 性能的要害指标。通过了解和利用这些测试技术和指标,您能够优化 MQTT 零碎性能和可靠性,晋升物联网和音讯传输基础设施的整体程度。

版权申明:本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/getting-started-with-mqtt-performance-testing-a-primer-on-scenarios-and-metrics

正文完
 0