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

 

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文件

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 您好,我可以提供一个同时支持JMeter测试MQTT协议和Google Protocol Buffers协议的插件,它是MQTT Protocol Plugin for JMeter。该插件可以通过添加MQTT协议支持来扩展JMeter的功能,并提供了与Google Protocol Buffers协议的兼容性。 该插件可以通过JMeter插件管理器安装。安装后,您可以使用它来创建MQTT测试计划,并在测试计划中使用Google Protocol Buffers协议进行数据交换。希望这对您有所帮助! ### 回答2: 目前,JMeter并没有提供官方的插件来测试MQTT协议和Google Protocol Buffers协议。但是,我们可以通过使用第三方插件来实现这个目标。 要测试MQTT协议,可以使用Eclipse Paho插件。Paho是一个开源的MQTT客户端库,它提供了多种编程语言的实现。要在JMeter中使用Paho插件,首先需要下载Paho的Java实现。然后将相关的JAR文件添加到JMeter的classpath中。使用JMeter的Java Request Sampler可以使用Paho库编写自定义的Java代码来测试MQTT协议。 要测试Google Protocol Buffers协议,可以使用jmeter-protobuf插件。这个插件是一个JMeter的定制扩展,可以与Google Protocol Buffers集成。要使用该插件,首先需要将jmeter-protobuf插件的JAR文件添加到JMeter的lib/ext目录中。接下来,在JMeter中创建一个ProtoBuf PreProcessor和一个ProtoBuf PostProcessor,这样就可以在发送和接收请求之前和之后对数据进行编码和解码。 使用这两个插件,你可以在JMeter中编写和执行MQTT和Google Protocol Buffers测试计划。但是,请注意,这些插件需要一定的配置和编程知识来正确使用。建议查阅官方文档和示例代码,以确保正确地配置和使用插件。 总结而言,要同时测试MQTT协议和Google Protocol Buffers协议,可以使用第三方插件Eclipse Paho和jmeter-protobuf。这些插件需要额外的配置和编程知识,所以一定要仔细阅读和理解官方文档和示例代码。 ### 回答3: 目前,我所知道的一个同时用于JMeter测试MQTT协议和Google Protocol Buffers协议的插件是Eclipse Paho插件。 Eclipse Paho是一个开源的MQTT客户端库,它提供了用于连接、发布和订阅MQTT消息的API。通过集成Eclipse Paho插件,我们可以在JMeter实现MQTT协议的测试。 同时,Google Protocol Buffers是一种跨平台、语言无关的数据序列化机制,它可以在不同的平台和环境中进行数据交换。我们可以通过使用JMeter的扩展插件,如gRPC插件或Protobuf插件,来支持Google Protocol Buffers协议的测试。 要同时使用JMeter进行MQTT协议和Google Protocol Buffers协议的测试,我们可以按照以下步骤操作: 1. 下载和安装JMeter插件管理器,使我们能够方便地管理和安装JMeter的扩展插件。 2. 在JMeter插件管理器中搜索并安装Eclipse Paho插件,这样我们就可以使用该插件进行MQTT协议的测试。 3. 同样地,在JMeter插件管理器中搜索并安装gRPC插件或Protobuf插件,这样我们就可以使用其中的功能来支持Google Protocol Buffers协议的测试。 4. 在JMeter中创建测试计划,并添加MQTT Sampler和Protobuf Sampler来模拟相应的MQTT和Google Protocol Buffers请求。 5. 配置Sampler的参数,如服务器地址、端口号、订阅主题、发送的消息等等,以便进行相应的测试。 6. 运行测试计划,观察并分析测试结果,以评估系统在处理MQTT和Google Protocol Buffers协议时的性能。 总之,通过集成Eclipse Paho插件和适当的JMeter扩展插件,我们可以实现同时测试MQTT和Google Protocol Buffers协议的功能,并评估系统的性能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值