【JMeter】JMeter之MQTT压测

文章目录

  • MQTT概念
  • Jmeter压测MQTT
    • MQTT服务器
    • 下载Jmeter MQTT插件
    • 测试MQTT
    • 测试思路和解决方法

MQTT概念

MQTT是什么
MQTT是用于物联网(IoT)的OASIS标准消息传递协议。它被设计为一种非常轻量级的发布/订阅消息传输,非常适合使用较少的代码占用和最小的网络带宽连接远程设备。如今,MQTT已广泛应用于汽车、制造业、电信、石油和天然气等行业。
官网:https://mqtt.org/

MQTT原理

MQTT架构
举例:温度传感器(client)采集温度,发布主题为【温度】,内容为24摄氏度的报文,代理/服务器(broker)根据订阅规则,对订阅主题为【温度】的client进行分发。
在这里插入图片描述
MQTT特性:
(1)发布者和订阅者不用了解彼此
(2)发布者和订阅者不直接建立联系
(3)发布者和订阅者不用同时在线,非请求/应答模式

  • 建立连接
    第一步:client向broker发送CONNECT报文。
    在这里插入图片描述
    在这里插入图片描述
    第二步:broker向client发送CONNACK报文。
    在这里插入图片描述
    在这里插入图片描述
  • 发布主题client–>broker
    在这里插入图片描述
  • 订阅主题client–>broker
    在这里插入图片描述
  • 订阅确认broker–>client
    在这里插入图片描述

    QoS
    QoS用于告知物联网系统,哪些信息是重要信息,需要准确无误的传输,邮些信息不那么重要,丢失也没有问题。
    QoS=0,只负责发送,不负责检查消息是否被收到。占用网络资源低,适合传输不重要的信息。
    QoS=1,发送端发送完成后,检查接收端是否已经成功收到了信息,要确认。占用网络资源中,建议便用。
    QoS=2,发送端发送完成后,检查接收端是否已经成功收到了信息,收到确认,再次发送询间(你确定收到了吗?),等待二次回复,实现二次确认。占用网络资源多,适合传输重要信息。

Jmeter压测MQTT

MQTT服务器

  1. 下载EMQX:docker pull emqx:5.3.2
  2. 启动容器:docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx:5.3.2 (1883是MQTT端口,18083是管理端端口)
  3. 进入管理端:http://x.x.x:18083,默认admin/public
    在这里插入图片描述
    在这里插入图片描述

下载Jmeter MQTT插件

  1. 下载MQTT插件:https://jmeter-plugins.org/
    在这里插入图片描述
  2. jar下载好后,拷贝到jmeter目录下的lib\ext目录下,重启jmeter
    在这里插入图片描述
    注意事项:
    (1)发布主题
    发布的主题没有订阅,发布不成功。https://www.emqx.com/zh/blog/mqtt-5-introduction-to-publish-subscribe-model
    (2)会话
    3.1 Clean Session=5.0 Clean Start +Session Expiry Interval
    https://www.emqx.com/zh/blog/mqtt5-new-feature-clean-start-and-session-expiry-interval
    jmeter里Clean Session为false,会话会保留,方便复用
    jmeter里Clean Session为true,连接断开后,emqx看不到会话记录
    (3)保留信息
    retained messages为true,broker会保留信息,订阅取样器发送请求可以获取信息
    retained messages为false,broker不会保留信息,订阅取样器发送请求无法获服信息

测试MQTT

  1. 连接和释放
    MQTT Connect取样器发起连接后,EMQX有连接的会话。
    在这里插入图片描述
    在这里插入图片描述
    添加MQTT DisConnect取样器,再次发起连接,EMQX没有多余的连接。
    因为在MQTT3.1.1中连接参数Clean session设置为true,等同于在MQTT5.0中将Clean Start设置为1,并且将Session Expiry Interval设置为0,即会话的生命周期与网络连接保持一致。(此时连接已断开,会话终止)
    在这里插入图片描述
    如果在MQTT3.1.1中Clean session设置为false,等同于在MQTT5.0中将Clean Start设置0,并且将Session Expiry Interval设置为OxFFFFFFFF,即会话永不过期。但是为了节省资源,EMQX会额外限制2小时。加上MQTT DisConnect,会话断开,但是会保留会话记录,方便复用。
    在这里插入图片描述
    在这里插入图片描述
  2. 发布和订阅
    测试发布和订阅之前,禁用MQTT DisConnect取样器。(如果没有禁用,EMQX看不到订阅主题的任何数据,没有订阅,主题就会被丢弃)
    MQTT Pub Sampler发布主题(MQTT Sub Sampler没有使用)
    在这里插入图片描述
    EMQX没有看到主题,原因:如果不存在任何订阅,那么消息会被丢弃。
    在这里插入图片描述
    添加MQTT Sub Sampler后,再次发起主题。EMQX看到主题和订阅。
    在这里插入图片描述
    在这里插入图片描述
    PS:
    • EMQX会针对已经订阅主题并且处于连接状态的客户端进行分发。
    • EMQX一般情况不保存消息。
    • 客户端一发布主题,EMQX就转发;客户端一订阅主题,EMQX就转发(需要MQTT Pub Sampler
      Retained message为true)
      在这里插入图片描述

测试思路和解决方法

  1. 控制器和配置
    在负载压力侧试中,尽量连接断开一次,使用 “仅一次控制器” ,把线程数和负载长度作为主要参数进行考核。
  2. Java堆栈空间不够用
    java: java.lang.OutofMemoryError: Java heap space
    是由于线程过多或者Payload负载过大导致JVM虚拟机内存不够用,解决办法就是增加虚拟机内存。右键用记事本打开jmeter.bat,修改-Xms1g-Xmx4g中的数字值,他们分别代表最小和最大值为1GB~4GB,当然你也可以改小为m(兆)的单位,这要根据你的需求来。以下是我的设置: set HEAP=-Xms1g -Xmx4g -XX:MaxMetaspaceSize=256m
  3. 执行效率
    GUI界面是用来配置工程和Debug用的,他很耗资源,因此一旦配置好后,还是采用控制台执行测试比较贴合实际,通过以下命令就可以简单启动测试:jmeter -n -t xxxxx.jmx
  4. 状态异常
    java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED
    测试中控制台的上述异常是mqtt-xmeter插件的线程池异常,不代表测试失败,不用管它,他会重新启动。我们只需要在控制台注意查看测试信息中的Err:是否为0%就好了。再用一个客户端去订阅测试中的Topic,看看是否能够接到数据,能接到说明测试没有中止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/981746.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android U 分屏——SystemUI侧处理

WMShell相关的dump命令 手机分屏启动应用后运行命令:adb shell dumpsys activity service SystemUIService WMShell 我们可以找到其中分屏的部分,如下图所示: 分屏的组成 简图 分屏是由上分屏(SideStage)、下分屏(MainStage)以及分割线组…

一键安装Nginx部署脚本之Linux在线安装Nginx,脚本化自动化执行服务器部署(附执行脚本下载)

相关链接 一键安装Nginx部署脚本之Linux在线安装Nginx一键安装Redis部署脚本之Linux在线安装Redis一键安装Mysql部署脚本之Linux在线安装Mysql一键安装JAVA部署脚本之Linux在线安装JDKXshell客户端免费版无需注册XFtp客户端免费版无需注册 前言 简化服务器部署操作&#xff0…

yum源选要配置华为云的源,阿里云用不了的情况

curl -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo

软考中级-数据库-3.2 数据结构-数组和矩阵

数组 一维数组是长度固定的线性表,数组中的每个数据元素类型相同。n维数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。 例如一维数组a[5][a1,a2,a3,a4,a5] 二维数组a[2][3]是一个2行2列的数组 第一行[a11,a12,a13] 第二行[a21,a22,a23…

微服务组件详解——sentinel

1.启动sentinel: 下载jar sentinel-dashboard-1.8.0.jar 使用以下命令直接运行 jar 包(JDK 版本必须≥ 1.8): java -Dserver.port9999 -jar D:\sentinel-dashboard-1.8.0.jar 控制台访问地址:http://localhost:9999…

网络安全清单

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 自主访问控(DAC:Discretionary Access Control) 自主访问控制(DAC)是一个访问控制服务,其执行一个基于系统实体身份的安全政策和它们的授权来访问系统…

unity学习62,尝试做第一个小游戏项目:flappy bird

目录 学习参考 1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline) 1.1.2 universe 2D 1.1.3 这次选择 2D(built-in-Render pipeline) 1.2 创建项目 1.2.1 注意点 1.2.2 如果想修改项目名 2 导入美术资源包 2.1 下载一个flappy bird的…

tauri2+typescript+vue+vite+leaflet等的简单联合使用(一)

项目目标 主要的目的是学习tauri。 流程 1、搭建项目 2、简单的在项目使用leaflet 3、打包 准备项目 环境准备 废话不多说,直接开始 需要有准备能运行Rust的环境和Node,对于Rust可以参考下面这位大佬的文章,Node不必细说。 Rust 和…

【FastGPT】如何新增用户修改密码

【FastGPT】如何新增用户&修改密码 摘要查看运行中的容器进入mongo容器登录mongo数据库切换数据库查询用户集合数据新增用户查询团队表数据创建团队查询团队成员集合数据把用户加入团队FastGPT用户密码的加密规则介绍加密算法Java版参考代码&单元测试代码修改密码 摘要…

复试准备日常

实验室目前投了 aiot 这周四 感知计算面试3.5号下午2点开始(面完了他问我有没有项目) 532图像处理实验室(我的项目大多也是图像处理的)(预计下周末)提前到3.4号下午6点 我不在第一批里面 软专不知道要几个 …

HiRT:利用分层机器人Transformer 增强机器人控制

25年2月来自清华、伯克利分校和上海姚期智研究院的论文“HiRT: Enhancing Robotic Control with Hierarchical Robot Transformers”。 大型视觉-语言-动作 (VLA) 模型利用强大的预训练视觉-语言模型 (VLM) 后端,由于其深刻的泛化能力而在机器人控制方面显示出良好…

Netty笔记3:NIO编程

Netty笔记1:线程模型 Netty笔记2:零拷贝 Netty笔记3:NIO编程 Netty笔记4:Epoll Netty笔记5:Netty开发实例 Netty笔记6:Netty组件 Netty笔记7:ChannelPromise通知处理 Netty笔记8&#xf…

MySQL-高级查询

查询处理 排序(默认不是按主键排序的) order by 字段1[,字段2] [asc|desc] 默认是升序排序也可以指定 select 列表中列的序号进行排序如果是多个字段,那么在上一个字段排序完的基础上排序下一个 限制数量 limit 行数&#xff0…

解决各大浏览器中http地址无权限调用麦克风摄像头问题(包括谷歌,Edge,360,火狐)后续会陆续补充

项目场景: 在各大浏览器中http地址调用电脑麦克风摄像头会没有权限,http协议无法使用多媒体设备 原因分析: 为了用户的隐私安全,http协议无法使用多媒体设备。因为像摄像头和麦克风属于可能涉及重大隐私问题的API,ge…

权限系统设计方案实践(Spring Security + RBAC 模型)

前言 权限系统设计基本上是所有项目中都会涉及的一个重要部分。通过权限系统,我们将对用户角色、功能模块访问进行限制,从而保证系统安全性。本文将介绍中大型项目中常用的一套权限系统设计方案,通过 SpringSecurity 安全管理框架&#xff0c…

数学软件Matlab下载|支持Win+Mac网盘资源分享

如大家所了解的,Matlab与Maple、Mathematica并称为三大数学软件。Matlab应用广泛,常被用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 Matlab将数值分析、矩阵计算、科学…

植物大战僵尸杂交版v3.3最新版本(附下载链接)

B站游戏作者潜艇伟伟迷于12月21日更新了植物大战僵尸杂交版3.3版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/6f2a…

GPU、NPU与LPU:大语言模型(LLM)硬件加速器全面对比分析

引言:大语言模型计算基础设施的演进 随着大语言模型(LLM)的快速发展与广泛应用,高性能计算硬件已成为支撑LLM训练与推理的关键基础设施。目前市场上主要有三类处理器用于加速LLM相关任务:GPU(图形处理单元…

计算机网络数据传输探秘:包裹如何在数字世界旅行?

计算机网络数据传输探秘:包裹如何在数字世界旅行? 一、从快递网络看数据传输本质 想象你网购了一件商品: 打包:商家用纸箱包装,贴上地址标签(数据封装)运输:包裹经过网点→分拣中心→运输车(网络节点与链路)签收:快递员核对信息后交付(数据校验与接收)数据的网络…

VirtualBox虚拟机MacOS从Big Sur升级到Sequoia(失败)

VirtualBox虚拟机里安装好Big Sur版本,尝试升级到Sequoia,但是最终失败了。 软件升级 直接在系统偏好-软件更新里可以看到提示,提示可以升级到15版本Sequoia 点击同意,看能不能升级到Sequoia吧。升级前先用时光做了备份。 升级…