0


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下使用

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发布消息:

  1. linux压测命令:(需要先将bin/jmeter添加可执行权限)
    chmod +x bin/jmeter
    ./bin/jmeter -n -t mqtt_test.jmx -l result.jtl

  2. 将结果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文件

本文转载自: https://blog.csdn.net/liuy5277/article/details/124800462
版权归原作者 liuy5277 所有, 如有侵权,请联系我们删除。

“Jmeter 实现mqtt协议压力测试”的评论:

还没有评论