环境准备:

jmeter插件下载:
mqttxmeter1.0.1jarwithdependencies.jar

把MQTT插件放在 %JMeter_Home%/lib/ext下。重启jmeter.

MQTT连接。

Server name or IP: 被测MQTT服务器地址。
Port number: TCP连接的端口1883, SSL连接则是8883。
Timeout(s): 连接超时设置,以秒为单位。
user name: 连接MQTT的帐户名。
password: 连接MQTT的密码。(具体询问开发)

ClientId: 客户端标识,具体询问开发被模拟的客户端标识(注意一个标识快速连接多次会连接失败,并发记得参数化(经验))。
Keep alive(s): 心跳信号发送间隔。例如,300表示客户端每隔300秒向服务器发出ping请求,以保持连接活跃。(注意,不正常disconnect,连接还会继续保持。除非关掉jmeter. 正常mqtt disconnect请无视。)
Connect attempt max: 第一次连接失败后,尝试重连的最大次数。超过该次数则认为连接失败。
Reconnect attempt max: 后续连接过程中连接失败后,尝试重连的最大次数。超过该次数则认为连接失败。
好了,连接上就可以进行消息发布了。


MQTT发布

QoS Level: 服务质量,取值为0,1,2,分别代表MQTT协议规范里的至多一次(AT_MOST_ONCE),至少一次(AT_LEAST_ONCE),精确一次(EXACTLY_ONCE)(网上COPY,具体我就用了0,用1 2发送失败。)
Topic name: 做为发布方,把消息发布到所属的话题中。
Add timestamp in payload: 如果勾选,发布的消息体开头会附带当前时间戳,利用它可以在消息接收端计算消息达到的延时。不勾选则只发送实际的消息体。

  1. Message type: 目前支持三种消息类(我只用了String,其它请看网上的其它介绍。)

    1. String: 普通字符串 (如上面截图所示,你要发送的消息。具体上报什么,可找开发要相关json等。)
    2. Hex String: 以16进制数值表示的串,比如字符串Hello, 可以表示为48656C6C6F (其中,48在ascii表中对应字母H,依次类推)。通常16进制串用来构造非文本的消息体,例如描述某些私有的协议交互和控制信息等等。
    3. Random string with fixed length*: 按指定长度生成随机的串作为消息体。

此时消息发送成功了。


消息订阅


topic name(s): 想要订阅的主题。(可以订阅多个)多个主题以英文逗号分隔。
Sample on:

  1. specified elapsed time(ms): 订阅的主题每多少毫秒作为一个结果展示(个人理解)。在这些毫秒内所收到的消息全部展示在一个结果内。
  2. number of received messages: 每收到多少个消息作为一个结果展示(个人理解)。

断开连接



注意:主动支行MQTT DisConnect可以断开。若测试过程中手动停止,致使线程未运行DisConnect,则连接不会断开。(已经过验证。)

测试过程中遇到的问题:

  1. MQTT连接数未修改。连接到1W报错连接失败。
  2. 修改MQTT连接数后,成功并发到5W,后续还会再进行测试。

MQTT消息队列压力测试的更多相关文章

  1. Linux进程通信之System V消息队列

    System V消息队列是Open Group定义的XSI,不属于POSIX标准.System V IPC的历史相对很早,在上个世70年代后期有贝尔实验室的分支机构开发,80年代加入System V的 ...

  2. Linux进程间通信(消息队列/信号量+共享内存)

    写在前面 不得不说,Deadline果真是第一生产力.不过做出来的东西真的是不堪入目,于是又花了一早上重写代码. 实验内容 进程通信的邮箱方式由操作系统提供形如 send()和 receive()的系 ...

  3. Kafka压力测试(自带测试脚本)(单机版)

    一.测试目的 本次性能测试在正式环境下单台服务器上Kafka处理MQ消息能力进行压力测试.测试包括对Kafka写入MQ消息和消费MQ消息进行压力测试,根据10w.100w和1000w级别的消息处理结果 ...

  4. MQTT压力测试工具之JMeter插件教程

    基于Jmeter的MQTT测试插件-上 1. Jmeter插件简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.下载 用于对软件做压力测试,它最初被设计用于Web应用 ...

  5. laravel+Redis简单实现队列通过压力测试的高并发处理

    秒杀活动 在一般的网络商城中我们会经常接触到一些高并发的业务状况,例如我们常见的秒杀抢购等活动, 在这些业务中我们经常需要处理一些关于请求信息过滤以及商品库存的问题. 在请求中比较常见的状况是同一用户 ...

  6. 【Microsoft Azure学习之旅】测试消息队列(Service Bus Queue)是否会丢消息

    组里最近遇到一个问题,微软的Azure Service Bus Queue是否可靠?是否会出现丢失消息的情况? 具体缘由如下, 由于开发的产品是SaaS产品,为防止消息丢失,跨Module消息传递使用 ...

  7. 消息队列&Celery&RabbitMQ&zeromq

    一.消息队列 什么是消息队列? “消息队列”是在消息的传输过程中保存消息的容器. “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象. 消息 ...

  8. C#分布式消息队列 EQueue 2.0 发布啦

    前言 最近花了我几个月的业余时间,对EQueue做了一个重大的改造,消息持久化采用本地写文件的方式.到现在为止,总算完成了,所以第一时间写文章分享给大家这段时间我所积累的一些成果. EQueue开源地 ...

  9. kafka性能参数和压力测试揭秘

    转自:http://blog.csdn.net/stark_summer/article/details/50203133 上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容 ...

随机推荐

  1. PageObject六大原则

    The public methods represent the services that the page offers 公共方法表示页面提供的服务 Try not to expose the i ...

  2. python3学习笔记回忆录01

    1.print(),print在python3中是一个函数,默认输出内容会自动换行,如果不换行需要加参数end=‘’ print ('hello,',end=' ’) print ('world!') ...

  3. 【HttpRunner v3.x】笔记—7. 测试用例-teststeps-RunTestCase

    以前我在写接口自动化用例的时候,为了保证用例的独立性,需要在setUp里调用各种满足用例的一些前置条件,其中就不乏调用了其他测试用例中的方法. 而httprunner也是支持了这一项很重要的特性,通过 ...

  4. [源码解析] Flink的Slot究竟是什么?(2)

    [源码解析] Flink 的slot究竟是什么?(2) 目录 [源码解析] Flink 的slot究竟是什么?(2) 0x00 摘要 0x01 前文回顾 0x02 注册/更新Slot 2.1 Task ...

  5. 【IDEA】【SpringBoot】基于idea对springboot程序远程调试

    一.开启远程调试前提:本地代码与服务器代码一致(实测:不关键的代码稍微有点不一样好像也不会有多大问题). 二.开启远程调试步骤 1.开发工具配置 idea端打开Edit configurations, ...

  6. 09 promise then

    then() 方法返回一个 Promise 链式调用:then里面回调函数(成功回调和失败回调),凡事这两个回调函数里面抛出错误或者返回一个已经是拒绝状态的 Promise. 那么 then 返回的  ...

  7. 自编Basic脚本 用BasicIntepreter执行 打印九九乘法表

    源码下载:https://files.cnblogs.com/files/heyang78/BasicInterpreter2-20200601-2.rar 用编程语言打印九九乘法表不难,用自编解释器 ...

  8. selenuim中18种定位方式

    18种定位方式=8种单数形式+8种复数形式+2种底层方案 单数可以确定唯一,复数无法确定: 单数形式定位,返回的是一个元素,复数形式,返回的是一个列表,返回的是当前页面所有符合要求的元素,没有意义 一 ...

  9. yum管理——ningx部署私有repo源(4)

    一.前言: 为了加快安装效率,或者日后服务器处于内网环境,本次特写一片搭建的是一个属于个人私有repo源仓库,思路如下: 1.首先到mirrors.ustc.edu.cn下载用到的源的仓库 2.然后安 ...

  10. 将ImageMagic库编译进nginx

    1.首先要将ImageMagick库的相应头文件加到环境变量中 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/ImageMagick/include ...