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

背景信息

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

操作步骤

  1. 登录PTS控制台,在左侧导航栏中选择压测中心 > 创建场景
  2. 创建场景页面,单击MQTT压测
  3. 创建MQTT场景页面,填写场景名
  4. 场景配置页签下,单击+添加测试节点,为目标串联链路添加所需测试节点。
    目前可添加的测试节点包括以下4种。每个测试节点除基本配置外,还可设置出参与检查点。具体操作,请参见出参与检查点
    • 建立连接:建立MQTT连接。
      相关基本配置 说明
      服务地址 MQTT服务器公网地址。客户端设备通常使用公网访问MQTT服务。以阿里云微消息队列MQTT版为例,若需对创建的MQTT实例进行压测,服务地址为该实例的公网接入点地址,可在微消息队列MQTT版控制台获取。
      服务端口 MQTT服务器端口,例如1883,即使用标准TCP端口。
      MQTT版本 MQTT版本,例如3.1.1。目前主流MQTT服务器都支持3.1.1版本。
      连接超时时间 客户端建立连接、发送消息等相关操作的超时时间,单位为毫秒。
      协议 连接协议,支持选择TCP或者SSL。
      用户名 MQTT客户端设置的用户名。
      密码 MQTT客户端设置的密码。
      客户端ID前缀 MQTT客户端ID。
      连接保活时长 活动心跳间隔秒数。例如300,即连接空闲时,每5分钟发送一次活动心跳。
      客户端添加随机后缀 是否为客户端ID添加随机后缀。
      清空会话 若选择打开开关,则创建的会话会在客户端断开连接时被清空;若选择关闭开关,则创建的会话在客户端断开连接时仍会保留。
    • 发布消息:配置需要发布的消息。
      相关基本配置 说明
      主题名 消息的主题。MQTT主题支持层次结构,使用正斜线(/)分割,类似文件路径,如pts_test/mqtt等。
      QOS级别 客户端向服务器发布消息的服务质量,可选最多发送一次最少发送一次只发送一次
      消息类型 发送消息的类型。支持普通字符串、十六进制字符串和固定长度的随机字符串。
      添加时间戳 是否在消息头中添加发送时间戳。若开启开关,可在测试时检查消息延迟。
      保留消息 是否保留此次消息。若选择保留,则当出现新的订阅者时,此消息会被发送给新的订阅者。
      消息内容 根据设置的消息类型填写需发送的消息内容。
    • 订阅消息:订阅发送的消息。
      相关基本配置 说明
      主题名 消息的主题,应与发布消息的主题匹配。
      QOS级别 服务器向客户端推送消息的服务质量,可选最多接收一次最少接收一次只接收一次
      添加时间戳 是否在接收消息后从消息头解析发送时间。若开启开关,可计算出消息延迟,即从发布端途经服务器最后到达订阅端花费的总时间。
      调试响应 此选项用于记录接收到的消息内容,以便调试排查问题。正式执行性能测试时可选择关闭该开关,以优化性能和减少内存占用。
      条件
      • 指定耗时:在设置的时间内持续接收消息。选择指定耗时后,需在条件值区域设置具体时长,单位为毫秒。
      • 指定收到消息数:设置需要接收到的消息数量。选择指定收到消息数后,需在条件值区域设置具体个数。
    • 关闭连接:关闭MQTT连接。
    说明 您可以单击每个测试节点右侧的循环控制器的更多图标图标,为该测试节点添加定时器。具体的定时器用法,请参见步骤4
  5. 可选:根据不同压测场景的需求,添加控制器和定时器。
    • 场景配置页签下,单击+添加控制器选择所需的控制器。
      • 循环控制器:控制所含测试节点应循环执行的次数。

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

      • 事务控制器:事务控制器下所包含的所有测试节点将会被算作为一个事务。其包含生成父样本是否包含样品中定时器和前后程序的持续时间两个设置项。
        • 生成父样本
          • 开启开关:该事务控制器下各测试节点自身的压测结果不会在压测报告中独立输出,而会被聚合作为事务控制器的结果呈现在报告中。
          • 关闭开关:该事务控制器以及其包含的测试节点的压测结果均会显示在报告中。
        • 是否包含样品中定时器和前后程序的持续时间:若选择开启此开关,则压测报告中事务控制器的平均响应时间为所有测试节点、定时器以及前后置处理器的平均响应时间之和。若不开启此开关,则事务控制器的平均响应时间仅为所有测试节点平均响应时间之和。
      • 仅一次控制器:仅一次控制器下添加的节点仅会被执行一次。
    • 场景配置页签下,单击+添加定时器选择所需的定时器。
      • 常量定时器:可设置停顿时长,表示压测过程中,在此处停顿的时长,单位为毫秒。
      • 同步定时器:可设置停顿时长模拟用户数,表示在一定时间内先等待达到一定用户数然后触发测试,但若在设定时间内未达到指定用户数,则不会继续等待,直接触发测试。
      • 统一随机定时器:统一随机定时器用于控制停顿时长,可设置延迟基准可变跨度。延迟基准为固定停顿时间,可变跨度为随机停顿时间的最大值。统一随机定时器的停顿时长为延迟基准所设的固定停顿时间加上可变跨度所设时间范围内的随机值。各随机值出现的概率相等。
      • 高斯定时器:高斯定时器与统一随机定时器类似,同样用于设置停顿时长,可设置延迟基准可变跨度。若要求随机停顿时间符合正态分布,可使用高斯定时器。
      • 固定吞吐量定时器:固定吞吐量定时器用于控制吞吐量,使测试节点按吞吐量执行。可设置条件和对应的吞吐量。条件包含仅当前线程所有活跃线程当前链路下活跃线程全局活跃线程当前链路下全局活跃线程
  6. 单击施压配置页签,设置MQTT的压测模式。
    压测配置 描述
    压力来源 本次压测使用的网络类型,包括国内公网阿里云VPC内网两种类型。
    说明 若选择使用阿里云VPC内网进行压测,则还需选择地域。
    并发数 指同时发送压测请求的用户数量。最低设置为10,最高设置取所购买资源包的最高并发规格。
    指定IP数 指定施压引擎的数量。若增加施压引擎,则计费也会相应增加。计费规则为计费VUM=引擎数×500×压测时长(分钟)。
    说明
    • 增加引擎数会使得计费增加,请关注施压配置页签右侧压力预估图的预估消耗VUM数。
    • 可设置的最大引擎数受资源包限制,具体信息,以控制台的指定IP数为准。
    • 为合理利用资源,增加后的引擎数不可超过配置的并发数。
    • 若无法满足需求,请提交工单申请扩容。
    压测时长 建议压测时长不低于2分钟,总时长默认不可超过24小时。如有特殊需求,请提交工单
    流量模型 压测的流量模型包含以下三种:
    • 均匀递增:从0开始均匀递增,达到最大并发后按照最大并发持续施压,不可指定循环次数。
    • 阶梯递增:从0开始按照递增阶梯逐步递增,达到最大并发后按照最大并发并持续施压。不可指定循环次数。
    • 固定压力值:以配置的固定并发值进行施压。
  7. 施压配置页签,配置场景中所有链路的最大并发权重。
    参数 说明
    最大并发权重 该串联链路占全场景的权重。如串联链路1置为1,串联链路2置为3,则表示各自在场景最大并发总占25%和75%。
    批量设置 批量设计链路的最大并发权重。
    1. 选中需要设置的所有串联链路。
    2. 单击批量设置,在对话框中输入数值。
    3. 单击确认,完成设置。
  8. 可选:创建场景页面下方,单击调试场景,对配置的场景进行调试,验证配置是否正确。
  9. 单击保存去压测,在对话框中单击确定