本文介绍如何使用JMeter压测MQTT服务,如何把脚本上传到coding上进行执行。
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/子目录下
A、通过代码进行生成
B、通过Sublime Text
注意:先通过Ctrl+A 全选;Ctrl+Shift+L 进入列选模式;使用方向键左右移动所有列的光标,并配合使用Shift键来多选每行的字符进行编辑
C、通过数据工厂
注意:需要事先把相应的MQTT客户端的信息根据业务逻辑,插入到数据库中。
把ip和port做成参数化,方便后期不同环境的切换调试
JMeter中一个线程模拟一个MQTT客户端设备,MQTT是长连接,要保证一个线程仅读取一次参数化文件txt
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。
QoS Level:本示例中选择0,即只发送一次,丢失不重发,可按需选择其他级别。
Topic name:消息topic,如/report-property
Add timestamp in payload:选中此项,方便测试时检查消息延迟
Payloads:消息体,做了相应的参数化,方便测试
if(!ResponseCode.equals("200")){
Failure = true;
FailureMessage="publish,返回码:" + ResponseCode + "\n";
return;
}
在MQTT Pub Sampler中添加相应的间隔时间,如设置在间隔1s之后,发送相应的消息
QoS Level:本次选择0
Topic name:topic名称,如/report-property
Payload includes timestamp:是否在接收消息后从消息头解析发送时间,一般勾选
Sample on: 选择specified elapsed time (ms),值填写3000.表示持续接收消息3000毫秒
Debug response:测试环境方便调试用,正式环境压测,不勾选
找相应的人员开通项目权限
包括config、demo;其中config:放置集群的配置信息;demo:存放执行的脚本,有新建、重命名、上传、下载和删除的操作。
注意:用coding平台时,jmeter脚本中参数文件的路径,需要写成是/jmeter/XXXX.txt
点击【设置】
修改相应的集群配置、参数化文件和命名空间
执行
分发成功的界面
点击【查看完整日志】
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。