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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
149 3
|
25天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
52 3
|
24天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
39 1
|
2月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
52 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
3月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
101 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
67 4
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
252 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
149 0
|
3月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【9月更文挑战第10天】随着软件应用的不断扩展,性能测试成为确保系统稳定运行的关键环节。本文通过对比Apache JMeter和Locust,探讨了如何在Python环境中利用这两款工具挖掘更多性能测试潜力。JMeter是一款成熟且功能强大的开源工具,支持多种协议,适用于各种应用的测试;而Locust则基于Python,通过简单脚本模拟HTTP请求,更适合Web应用测试。
99 3
|
3月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
114 2