PTS的MQTT压测功能支持对自建MQTT服务和阿里云微消息队列MQTT版进行压测。本文介绍如何使用MQTT压测功能。

背景信息

MQTT是专为移动互联网(Mobile Internet)、物联网(IoT)设计的超轻量级消息协议,用于连接移动端与云服务双向通信,广泛应用于各种应用领域,如端向云汇报状态、云向端推送消息、端向端发送消息(即时聊天)等场景。

功能入口

  1. 登录PTS控制台,在左侧导航栏选择性能测试 > 创建场景,然后单击MQTT压测
  2. 创建MQTT场景页面,填写场景名
  3. 场景配置页签下,单击+添加测试节点右侧的ul图标,为目标串联链路添加所需测试节点。

场景配置

单击串联链路右侧的ryi图标,展开串联链路,并配置基本信息、出参、检查点等信息。etu

基本配置

在串联链路的基本配置页签设置压测基本参数。具体配置如下。

  • 建立连接:建立MQTT连接。
    相关基本配置 说明
    服务地址 MQTT服务器公网地址。客户端设备通常使用公网访问MQTT服务。以阿里云微消息队列MQTT版为例,若需对创建的MQTT实例进行压测,服务地址为该实例的公网接入点地址,可在微消息队列MQTT版控制台获取。
    服务端口 MQTT服务器端口,例如1883,即使用标准TCP端口。
    MQTT版本 MQTT版本,例如3.1.1。目前主流MQTT服务器都支持3.1.1版本。
    连接超时时间 客户端建立连接、发送消息等相关操作的超时时间,单位为秒。
    协议 连接协议,支持选择TCP或者SSL。
    签名鉴权 默认关闭。打开签名鉴权,需要输入AccessKey ID、AccessKey Secret和实例ID。
    • AccessKey ID:用于标识用户,获取方式请参见获取AccessKey
    • AccessKey Secret:用于验证用户的密钥。AccessKey Secret必须保密。获取方式请参见获取AccessKey
    • 实例ID:MQTT产品中的实例ID。
    用户名 MQTT客户端设置的用户名。当打开签名鉴权时,无需设置此项。
    密码 MQTT客户端设置的密码。当打开签名鉴权时,无需设置此项。
    客户端ID前缀 MQTT客户端ID。
    连接保活时长 活动心跳间隔秒数。例如300,即连接空闲时,每5分钟发送一次活动心跳。
    客户端添加随机后缀 是否为客户端ID添加随机后缀。
    清空会话 若选择打开开关,则创建的会话会在客户端断开连接时被清空;若选择关闭开关,则创建的会话在客户端断开连接时仍会保留。
  • 发布消息:配置需要发布的消息。
    相关基本配置 说明
    主题名 消息的主题。MQTT主题支持层次结构,使用正斜线(/)分割,类似文件路径,如pts_test/mqtt等。
    QOS级别 客户端向服务器发布消息的服务质量,可选最多发送一次最少发送一次只发送一次
    消息类型 发送消息的类型。支持普通字符串、十六进制字符串和固定长度的随机字符串。
    添加时间戳 是否在消息头中添加发送时间戳。若开启开关,可在测试时检查消息延迟。
    保留消息 是否保留此次消息。若选择保留,则当出现新的订阅者时,此消息会被发送给新的订阅者。
    消息内容 根据设置的消息类型填写需发送的消息内容。
  • 订阅消息:订阅发送的消息。
    相关基本配置 说明
    主题名 消息的主题,应与发布消息的主题匹配。
    QOS级别 服务器向客户端推送消息的服务质量,可选最多接收一次最少接收一次只接收一次
    添加时间戳 是否在接收消息后从消息头解析发送时间。若开启开关,可计算出消息延迟,即从发布端途经服务器最后到达订阅端花费的总时间。
    调试响应 此选项用于记录接收到的消息内容,以便调试排查问题。正式执行性能测试时可选择关闭该开关,以优化性能和减少内存占用。
  • 关闭连接:关闭MQTT连接。

出参设置

在串联链路的出参设置页签设置出参。具体操作,请参见接口出参

检查点设置

在串联链路的检查点设置页签设置检查点。具体操作,请参见检查点(断言)

控制器和定时器(可选)

您可以根据不同压测场景的需求,添加控制器和定时器。

  • 场景配置页签下,单击+添加控制器选择所需的控制器。
    • 循环控制器:控制所含测试节点应循环执行的次数。

      选择循环控制器后,单击其右侧的循环控制器的更多图标图标,选择添加需循环执行的测试节点,并设置循环次数。压测时,会将此循环控制器下的测试节点按序执行设置的次数。

    • 事务控制器:事务控制器下所包含的所有测试节点将会被算作为一个事务。其包含生成父样本是否包含样品中定时器和前后程序的持续时间两个设置项。
      • 生成父样本
        • 开启开关:该事务控制器下各测试节点自身的压测结果不会在压测报告中独立输出,而会被聚合作为事务控制器的结果呈现在报告中。
        • 关闭开关:该事务控制器以及其包含的测试节点的压测结果均会显示在报告中。
      • 是否包含样品中定时器和前后程序的持续时间:若选择开启此开关,则压测报告中事务控制器的平均响应时间为所有测试节点、定时器以及前后置处理器的平均响应时间之和。若不开启此开关,则事务控制器的平均响应时间仅为所有测试节点平均响应时间之和。
    • 仅一次控制器:仅一次控制器下添加的节点仅会被执行一次。
  • 场景配置页签下,单击+添加定时器选择所需的定时器。
    • 常量定时器:可设置停顿时长,表示压测过程中,在此处停顿的时长,单位为毫秒。
    • 同步定时器:可设置停顿时长模拟用户数,表示在一定时间内先等待达到一定用户数然后触发测试,但若在设定时间内未达到指定用户数,则不会继续等待,直接触发测试。
    • 统一随机定时器:统一随机定时器用于控制停顿时长,可设置延迟基准可变跨度。延迟基准为固定停顿时间,可变跨度为随机停顿时间的最大值。统一随机定时器的停顿时长为延迟基准所设的固定停顿时间加上可变跨度所设时间范围内的随机值。各随机值出现的概率相等。
    • 高斯定时器:高斯定时器与统一随机定时器类似,同样用于设置停顿时长,可设置延迟基准可变跨度。若要求随机停顿时间符合正态分布,可使用高斯定时器。
    • 固定吞吐量定时器:固定吞吐量定时器用于控制吞吐量,使测试节点按吞吐量执行。可设置条件和对应的吞吐量。条件包含仅当前线程所有活跃线程当前链路下活跃线程全局活跃线程当前链路下全局活跃线程

施压配置

  1. 单击施压配置页签,设置压测模式。
    压测配置 描述
    压力来源 本次压测使用的网络类型,包括公网阿里云VPC内网两种类型。具体详情,请参见压力来源(公网和VPC)
    并发数 虚拟用户发起请求的个数。例如:100个并发数就是100个虚拟用户同时发起了请求。
    单并发连接数 单个用户能够发起的连接请求数。
    总连接数 虚拟用户同时发起的总并发连接数。例如,并发数为100,单并发连接数为2,则总连接数即为200。
    压测时长 建议压测时长不低于2分钟,总时长默认不可超过24小时。如有特殊需求,请提交工单
    流量模型 并发数的递增模型。选择不同的流量模型,页面右侧的压力预估图会同时刷新。
    • 均匀递增:默认均匀递增,并发数以每分钟相同数量的递增方式来进行压测。对应的压力预估图是一条斜直线。
    • 阶梯递增:并发数以阶梯递增的方式来进行压测。就是对系统并发的压力呈现阶梯性增加的过程,每个时间段并发数都要增加一个数量值,最终达到一个预期并发数,然后保持该并发数,持续运行一段时间。对应的压力预估图是阶梯形式的曲线图。
    • 固定压力值:并发数是固定的。对应的压力预估图是一条平直线,即设置多少并发数,会一直按这个并发数来进行压测。
    递增时长 全部并发从0到全部运行起来的时间。当流量模型选择的是均匀递增或者阶梯递增时,需要配置该递增时长。
    递增阶梯数 完成递增时间段的阶梯数。当流量模型选择的是阶梯递增时,需要配置该递增阶梯数。
    指定IP数 指定压测来源的IP个数。具体详情,请参见指定施压IP数
    流量地域定制 通过指定施压机的地理位置,即可模拟当地的用户流量。开启后可对施压机地域分布进行配置,从而实现施压流量地域分布的定制化。具体详情,请参见定制地域流量
  2. 配置场景中所有链路的最大并发权重。
    参数 说明
    最大并发权重 该串联链路占全场景的权重。如串联链路1置为1,串联链路2置为3,则表示各自在场景最大并发总占25%和75%。
    批量设置 批量设计链路的最大并发权重。
    1. 选中需要设置的所有串联链路。
    2. 单击批量设置,在对话框中输入数值。
    3. 单击确认,完成设置。

启动压测

您可以在创建压测场景页面左下方,单击调试场景,对配置的场景进行调试,验证配置是否正确。具体操作,请参见调试场景。然后单击保存去压测,在弹出的对话框中单击确定,启动压测。

后续操作

查看压测报告。具体操作,请参见查看多协议压测报告