coding压测MQTT服务

2021-06-24 18:01:09 浏览数 (1)

本文介绍如何使用JMeter压测MQTT服务,如何把脚本上传到coding上进行执行。

0 准备条件

  • 安装JMeter 5.4.1版本
  • 可以访问的MQTT服务

1 安装MQTT插件

1.1 mqtt插件下载地址

https://github.com/xmeter-net/mqtt-jmeter/releases

下载mqtt-jmeter插件最新版本JAR包:mqtt-xmeter-2.0.2-jar-with-dependencies.jar。

注意:1.0.1的版本,有些问题;建议使用2.0.2版本,拷贝插件JAR包到JMeter安装目录的lib/ext/子目录下

mqtt-jmeter插件放置成功后,打开jmeter,在sample中,能看到相应的MQTT Connect、MQTT DisConnect、MQTT Pub Sampler和MQTT Pub Sampler

2 准备客户端信息参数化txt文件

2.1 每个MQTT客户端需要提供以下信息

  • 用户名(username)、密码(password)和客户端ID(ClientId)
图一图一

2.2 测试数据生成方式

A、通过代码进行生成

B、通过Sublime Text

注意:先通过Ctrl A 全选;Ctrl Shift L 进入列选模式;使用方向键左右移动所有列的光标,并配合使用Shift键来多选每行的字符进行编辑

C、通过数据工厂

注意:需要事先把相应的MQTT客户端的信息根据业务逻辑,插入到数据库中。

3 编辑JMeter脚本

3.1 创建Thread Group

图 二图 二

3.2 添加查看结果树和聚合报告

图三图三

3.3 添加User Defined Variables

把ip和port做成参数化,方便后期不同环境的切换调试

图四图四
图五图五

3.4 创建Once Only Controller

JMeter中一个线程模拟一个MQTT客户端设备,MQTT是长连接,要保证一个线程仅读取一次参数化文件txt

图六图六

3.5 创建CSV Data Set Config

图七图七

3.6 创建MQTT连接

图八图八

MQTT Connection

Server name or IP:MQTT的服务器域名或者ip,

Port number:MQTT的服务器端口号

MQTT version:MQTT的版本

TImeout(s):建立连接的超时秒数

Protocols:有证书的,Protocols需要选择SSL。无证书的情况,Protocols需要选择TCP。

Uer authentication

User name:用${username}

Password:用${password}

ClientId:用${clientId}

Add random suffix for ClientId:不勾选,默认不添加后缀

Keep alive(s):活动心跳间隔秒数,根据实际业务进行设置

注意:有证书的,Protocols需要选择SSL。无证书的情况,Protocols需要选择TCP。

3.7 配置发布消息

图九图九

QoS Level:本示例中选择0,即只发送一次,丢失不重发,可按需选择其他级别。

  • QoS 0:“最多一次”,消息发布完全依赖底层 TCP/IP 网络
  • QoS 1:“至少一次”,确保消息可以到达,但消息可能会重复
  • QoS 2:“只有一次”,确保消息只到达一次

Topic name:消息topic,如/report-property

Add timestamp in payload:选中此项,方便测试时检查消息延迟

Payloads:消息体,做了相应的参数化,方便测试

3.8 配置断言

图十图十

if(!ResponseCode.equals("200")){

Failure = true;

FailureMessage="publish,返回码:" ResponseCode "n";

return;

}

3.9 配置监听

图十一图十一

3.10 创建Constant Timer

在MQTT Pub Sampler中添加相应的间隔时间,如设置在间隔1s之后,发送相应的消息

图十二图十二
图十三图十三

3.11 创建MQTT Sub Sampler

图十四图十四
图十五图十五

QoS Level:本次选择0

Topic name:topic名称,如/report-property

Payload includes timestamp:是否在接收消息后从消息头解析发送时间,一般勾选

Sample on: 选择specified elapsed time (ms),值填写3000.表示持续接收消息3000毫秒

Debug response:测试环境方便调试用,正式环境压测,不勾选

4 使用coding压测MQTT消息

4.1 开通压测项目权限

找相应的人员开通项目权限

4.2 上传jmeter脚本和参数化文件

图十六图十六
图十七图十七

包括config、demo;其中config:放置集群的配置信息;demo:存放执行的脚本,有新建、重命名、上传、下载和删除的操作。

注意:用coding平台时,jmeter脚本中参数文件的路径,需要写成是/jmeter/XXXX.txt

4.3 构建计划

4.3.1 创建构建计划

图十八图十八

4.3.2 选择模版

图十九图十九

4.3.3 创建成功界面

图二十图二十

4.4 分发参数化文件

4.4.1 在不同机器上放置不同的参数

点击【设置】

图二十一图二十一

修改相应的集群配置、参数化文件和命名空间

图二十二图二十二

执行

图二十三图二十三

分发成功的界面

图二十四图二十四

4.5 执行压测

4.5.1 点击设置

图二十五图二十五

4.5.2 修改相应的集群配置、命名空间和脚本

图二十六图二十六

4.5.3 执行测试

图二十七图二十七

4.5.4 查看执行日志

图二十八图二十八

点击【查看完整日志】

图二十九图二十九
图三十图三十

0 人点赞