当前位置: 首页 > news >正文

Jmeter 实现 mqtt 协议压力测试

1. 下载jmeter,解压

https://jmeter.apache.org/download_jmeter.cgi

以 5.4.3 为例,下载地址:

https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip

linux下解压:

unzip apache-jmeter-5.4.3.zip

2. 下载mqtt-jmeter插件

下载地址:

https://github.com/emqx/mqtt-jmeter/releases

https://github.com/emqx/mqtt-jmeter/releases/download/v2.0.2/mqtt-xmeter-2.0.2-jar-with-dependencies.jar

3. 将插件放置于jmeter的lib/ext目录下

windows/linux同样操作

4. 本文先在windows下生成的jmx脚本,然后传至linux下使用

新建两个线程组

第二个里面包含具体的压测,开启1000个线程,1s内将线程创建完毕,无限循环。创建两个计数器,pub_counter用来技术发布消息数,thread_counter用来线程计数

事先创建1000个设备,名称为cosmoiottest000001 - cosmoiottest000001000(可自己定义)。添加一次性控制器(mqtt连接一次,后续pub消息),写上配置信息。

添加循环控制器,循环一次。包含固定定时器,休眠1000ms,一个发布MQTT Pub Sampler,即每个线程进来执行一次发布消息然后休眠1000ms进入下一次循环。每个消息包含100个点位(根据自己需要设置),每个点位随机生成一个整数。

添加观察结果树、汇总报告、聚合报告等,可在windows下面查看结果

配置截图如下:

循环执行线程

图片

pub_counter计数器

图片

thread_counter计数器

图片

mqtt connect设置:

图片

MQTT发布消息:

图片

5. linux压测命令:(需要先将bin/jmeter添加可执行权限)

chmod +x bin/jmeter

./bin/jmeter -n -t mqtt_test.jmx -l result.jtl

6. 将结果jtl生成可视化报告,放置于result目录

mkdir result

./bin/jmeter -g result.jtl -o result

将结果目录拉下来,点开即可查看图形化结果

注意可能遇到问题:

执行jmeter压测后,进程不退出,编辑 jmeter.properties,打开配置

jmeterengine.force.system.exit=true

jmx文件传到linux后可能出错,建议英文环境下生成jmx文件,语言控制jmeter.properties

#language=en (默认英文,切换为中文为:zh_CN)

mqtt-jmeter 的jar包需要传至lib/ext目录,否则不可用

生成报告时报错:

Consumer failed with message :Begin size 0 is not equal to fixed size 5

将jdk换成8版本

jtl结果文件,也可拉到windows,使用jmeter直接查看,新建线程组->聚合报告,选择jtl文件

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

http://www.lryc.cn/news/161429.html

相关文章:

  • 蓝桥杯官网练习题(凑算式)
  • 机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)
  • 【C语言基础】那些你可能不知道的C语言“潜规则”
  • android framework之Applicataion启动流程分析(三)
  • 使用Scrapy框架集成Selenium实现高效爬虫
  • Maven 和 Gradle 官方文档及相关资料的网址集合
  • docker概念、安装与卸载
  • elasticsearch访问9200端口 提示需要登陆
  • 【深度学习】 Python 和 NumPy 系列教程(一):Python基本数据类型:1、数字(整数、浮点数)及相关运算;2、布尔值
  • 无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务)
  • HDD-FAT32 ZIP-FAT32 HDD-FAT16 ZIP-FAT16 HDD-NTFS
  • 王道数据结构编程题 二叉树
  • 登录怎么实现的,密码加密了嘛?使用明文还是暗文,知道怎么加密嘛?
  • Nginx和Tomcat负载均衡实现session共享
  • 【算法题】210. 课程表 II
  • “数据类型不一致”会走索引吗?
  • Leetcode 1572.矩阵对角线元素之和
  • [PG]将一行数据打散成多行数据
  • 二蛋赠书一期:《快捷学习Spring》
  • Threejs汽车展厅
  • LeetCode:207. 课程表、210. 课程表 II(拓扑排序 C++)
  • 如何使用组件
  • Android 13.0 Launcher3定制之双层改单层(去掉抽屉式二)
  • 对卷积的一点具象化理解
  • NV12数据格式转H265编码格式实现过程
  • ubuntu 22.04 深度学习环境配置
  • 支付宝小程序集成mqtt兼容IOS和安卓
  • 在Qt5中SQLite3的使用
  • 使用Docker部署debezium来监控 MySQL 数据库
  • 百度低质量站点怎么办?解决百度低质量站点的方法和工具