Jmeter 实现mqtt协议压力测试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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下使用
4.1 新建两个线程组
    第一个仅包含一个 MQTT DisConnect执行一次
    第二个里面包含具体的压测开启1000个线程1s内将线程创建完毕无限循环。创建两个计数器pub_counter用来技术发布消息数thread_counter用来线程计数
4.2 事先创建1000个设备名称为cosmoiottest000001 - cosmoiottest000001000可自己定义。添加一次性控制器mqtt连接一次后续pub消息写上配置信息。
4.3 添加循环控制器循环一次。包含固定定时器休眠1000ms一个发布MQTT Pub Sampler即每个线程进来执行一次发布消息然后休眠1000ms进入下一次循环。每个消息包含100个点位(根据自己需要设置)每个点位随机生成一个整数。配置详见截图
4.4 添加观察结果树、汇总报告、聚合报告等可在windows下面查看结果
4.5 配置截图如下:

循环执行线程

 

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
将结果目录拉下来点开即可查看图形化结果


注可能遇到问题
1. 执行jmeter压测后进程不退出编辑 jmeter.properties,打开配置
jmeterengine.force.system.exit=true
2. jmx文件传到linux后可能出错建议英文环境下生成jmx文件语言控制jmeter.properties
#language=en (默认英文切换为中文为zh_CN)
3. mqtt-jmeter 的jar包需要传至lib/ext目录否则不可用
4. 生成报告时报错Consumer failed with message :Begin size 0 is not equal to fixed size 5
将jdk换成8版本
5. jtl结果文件也可拉到windows使用jmeter直接查看新建线程组->聚合报告选择jtl文件

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6