MQTT压力测试工具之JMeter插件教程

简介: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)主要用于移动Push,移动IM,物联网M2M,物联网采集等,这些应用场景的特点是客户端的连接设备数比较多,那么如何在系统上线之前验证系统能否承受预先设计的压力呢?
MQTT简介
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。MQTT现在主要用于移动Push,移动IM,物联网M2M,物联网采集等,这些应用场景的特点是客户端的连接设备数比较多,那么如何在系统上线之前验证系统能否承受预先设计的压力呢?

JMeter MQTT插件
JMeter作为现在最流行的开源性能测试工具,实现了对各种协议的测试支持,比如HTTP/HTTPS,SOAP/REST,FTP,JDBC等。JMeter提供了灵活的插件机制,允许第三方扩展不支持的协议,网站 https://jmeter-plugins.org/ 中搜集了将近60多个插件,这些插件提供了各种功能,但是该网站并没有提供测试MQTT的插件。
经过上github上搜索,发现 github tuanhiep是一个不错的插件,基本的MQTT测试功能都已经提供,但是在使用过程中发现有以下问题:
  1. 发现了一些bug:比如脚本中某些值无法保存等
  2. 使用不方便:使用该插件的过程比较麻烦,需要手工解压/打包JMeter的包,容易出错
  3. 只支持JMeter2.1版本,现在JMeter官方的最新版本已经到3.1,想使用最新版本的JMeter就会有问题
使用方法
针对于这些问题,我们fork了该项目,并且修复了在使用过程中发现的这些bug,并且让使用过程变得更加简单。
  1. 如果之前已经开着JMeter,请先关闭
  2. 从这里选择相应版本的插件进行下载
  3. 将下载的2个文件(ApacheJMeter_core.jar, mqtt-jmeter-jar-with-dependencies.jar)拷贝到JMeter的插件目录: $JMETER_HOME/lib/ext
  4. 重新启动JMeter
  5. 具体的使用过程可以参考插件的github主页
高级使用
如果发现有问题,可以直接拉项目代码进行修改,或者在该项目上创建相应的issue。如果需要重新打包,运行工程下面的repack_jmeter_core.xml脚本就可以了。需要注意的是,在运行之前,请先修改好脚本里的下面两行的值。其中第一行是所要打包的JMeter的版本的文件名(不包括扩展名,而且下载的必须是tar文件),第二行是你下载文件所在的目录。
<property name="jmeter_tar_file_name" value="apache-jmeter-3.0"/>
<property name="jmeter_tar_folder" value="/Users/rockyjin/Downloads"/>
运行成功后会显示如下所示的内容,并把目录 /mqtt-jmeter/libs/${jmeter_tar_file_name}_new中的两个jar文件拷贝至 $JMETER_HOME/lib/ext目录下。
Buildfile: /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/repack_jmeter_core.xml
unpack_jmeter:
[delete] Deleting directory /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/libs/apache-jmeter-3.0_new
[echo] Adding MQTT plugin resources...
[untar] Expanding: /Users/rockyjin/Downloads/apache-jmeter-3.0.tgz into /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/libs
repack:
[echo] Unzip original ApacheJMeter_core.jar
[unzip] Expanding: /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/libs/apache-jmeter-3.0/lib/ext/ApacheJMeter_core.jar into /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/libs/apache-jmeter-3.0/work_dir
[echo] Creating new ApacheJMeter_core.jar file
[jar] Building jar: /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/libs/apache-jmeter-3.0_new/ApacheJMeter_core.jar
[copy] Copying 1 file to /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/libs/apache-jmeter-3.0_new
[delete] Deleting directory /Users/rockyjin/Documents/workspace/rocky_jmeter_mqtt/mqtt-jmeter/libs/apache-jmeter-3.0
BUILD SUCCESSFUL
Total time: 2 seconds

大规模MQTT协议测试 – XMeter帮您提高效率,降低成本
针对大规模的MQTT协议测试,可能需要准备大量的测试机器对被测系统进行打压,这个过程需要大量的准备机器环境,以及管理这些环境的工作,导致工作效率比较低、而且容易出错。XMeter将这些过程迁移至云端,用户只要关注测试脚本的实现过程,而无需关心这些测试环境的管理,而且提供了丰富的测试报告,让性能问题一目了然。
免费试用
点击“XMeter性能测试SaaS服务”免费试用,注册帐户,并上传MQTT测试脚本至XMeter,
XMeter性能测试SaaS服务
MQTT压力测试工具之JMeter插件教程
登录
控制台
输入测试参数,虚拟用户数和运行时间,提交测试。后台会根据用户输入的测试参数,自动创建相应的VM对目标系统进行打压.
运行测试
通过测试报告可以查看一些关于测试的信息,比如测试的连接数,持续时间,当前的测试状态,也可以将测试日志下载下来进行检查等
MQTT压力测试工具之JMeter插件教程
测试结果
实时产生的测试报告,允许用户查看性能测试过程中最关心的性能测试指标。
MQTT压力测试工具之JMeter插件教程
实时测试结果 -实时报告
MQTT压力测试工具之JMeter插件教程
实时测试结果 - 实时图表
测试历史记录都被保存下来,可以随时进行查看和比较。
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
12月前
|
数据采集 JSON JavaScript
Cypress 插件实战:让测试更稳定,不再“偶尔掉链子”
本文分享如何通过自定义Cypress插件解决测试不稳定的痛点。插件可实现智能等待、数据预处理等能力,替代传统硬性等待,有效减少偶发性失败,提升测试效率和可维护性。文内包含具体实现方法与最佳实践。
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
980 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
925 6
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
2373 10
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1781 23
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
数据可视化 测试技术 Go
Go 语言测试与调试:`go test` 工具用法
`go test` 是 Go 语言内置的测试工具,支持单元测试、基准测试、示例测试等功能。本文详解其常用参数、调试技巧及性能测试命令,并提供实际项目中的应用示例与最佳实践。
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
1476 0
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。