前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >coding压测MQTT服务

coding压测MQTT服务

原创
作者头像
林喜超
修改2021-06-24 18:01:09
1.3K0
修改2021-06-24 18:01:09
举报
文章被收录于专栏:CSIG质量部压测团队

本文介绍如何使用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 查看执行日志

图二十八
图二十八

点击【查看完整日志】

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0 准备条件
  • 1 安装MQTT插件
    • 1.1 mqtt插件下载地址
    • 2 准备客户端信息参数化txt文件
      • 2.1 每个MQTT客户端需要提供以下信息
        • 2.2 测试数据生成方式
        • 3 编辑JMeter脚本
          • 3.1 创建Thread Group
            • 3.2 添加查看结果树和聚合报告
              • 3.3 添加User Defined Variables
                • 3.4 创建Once Only Controller
                  • 3.5 创建CSV Data Set Config
                    • 3.6 创建MQTT连接
                      • 3.7 配置发布消息
                        • 3.8 配置断言
                          • 3.9 配置监听
                            • 3.10 创建Constant Timer
                              • 3.11 创建MQTT Sub Sampler
                              • 4 使用coding压测MQTT消息
                                • 4.1 开通压测项目权限
                                  • 4.2 上传jmeter脚本和参数化文件
                                    • 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 查看执行日志
                                  相关产品与服务
                                  数据库
                                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档