您可以使用WebSocket压测功能在PTS控制台快速构建压测场景,实现压测。本文介绍如何对WebSocket进行压测。

背景信息

WebSocket实现了客户端与服务端之间的双向数据传输,在消息推送、在线聊天等实时通信场景下均有广泛应用。目前常用的WebSocket压测方法是通过在压测工具(如JMeter压测工具)中安装相应的WebSocket压测插件实现压测。但搭建JMeter压测环境需要一定的时间成本和代码基础。PTS的WebSocket压测功能可以帮您解决这些问题。您可以通过PTS控制台快速构建WebSocket压测场景。在完成压测后,还能通过生成的压测报告查看压测具体详情,并结合压测数据优化系统。

操作步骤

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

    目前可添加的测试节点包括以下6种。每个测试节点除基本配置外,还可设置出参与检查点。具体操作,请参见出参与检查点

    • 建立连接:在施压端与被压测端之间建立WebSocket连接。WebSocket压测所含的其余测试节点(如心跳、只读、只写和请求响应等)均依赖于连接的建立。
      相关基本配置 说明 示例
      压测URL 需要进行压测的WebSocket链接。 wss://echo.websocket.org
      连接超时时间 施压端与被压测端建立连接的时间限制,单位为毫秒。 20000
      响应超时时间 施压端等待被压测端响应的时间限制,单位为毫秒。 6000
    • 心跳:检测施压端和被压测端的连接状态。
      相关基本配置 说明 示例
      请求类型
      • 发送ping期望pong:施压端发送信息告知被压测端自己处于存活状态,期望被压测端返回信息以确定被压测端处于存活状态。
      • 仅发送pong:仅施压端发送信息告知被压测端自己处于存活状态。
      发送ping期望pong
      响应超时时间 施压端等待被压测端响应的时间限制,单位为毫秒。
      说明 仅在当配置场景为发送ping期望pong时设置。
      6000
    • 只读:施压端仅接收被压测端发送的信息。
      相关基本配置 说明 示例
      数据类型 可读的数据类型,包括Text(文本类型)、Binary(二进制类型)和Any(任意类型)。 Text
      响应超时时间 施压端接收信息的时间限制,单位为毫秒。 6000
    • 只写:施压端仅向被压测端发送信息。
      相关基本配置 说明 示例
      数据类型 可读的数据类型,包括Text(文本类型)、Binary(二进制类型)和Any(任意类型)。 Text
      请求数据 施压端发送信息的内容。可根据不同数据类型输入相应内容。 WebSocket Single Write Test
    • 请求响应:施压端向被压测端发送请求并接收响应。
      相关基本配置 说明 示例
      数据类型 可读的数据类型,包括Text(文本类型)、Binary(二进制类型)和Any(任意类型)。 Text
      请求数据 施压端发送信息的内容。可根据不同数据类型输入相应内容。 WebSocket Request and Response Test
      响应超时时间 被压测端在接收信息后响应的时间限制,单位为毫秒。 6000
    • 关闭连接:关闭施压端与被压测端建立的连接。
      相关基本配置 说明 示例
      状态码 表明关闭连接对应的状态码,可自定义。 1000
      响应超时时间 施压端接收到关闭连接状态码的时间限制,单位为毫秒。 6000
  5. 可选:根据不同压测场景的需求,添加控制器和定时器。
    • 场景配置页签下,单击+添加控制器选择所需的控制器。
      • 循环控制器:控制所含测试节点应循环执行的次数。
        选择循环控制器后,单击其右侧的循环控制器的更多图标图标,选择添加需循环执行的测试节点,并设置循环次数。如下图所示,压测时,会将此循环控制器下的测试节点按序执行5次。循环控制器示例
      • 事务控制器:事务控制器下所包含的所有测试节点将会被算作为一个事务。其包含生成父样本是否包含样品中定时器和前后程序的持续时间两个设置项。
        • 生成父样本
          • 开启开关:该事务控制器下各测试节点自身的压测结果不会在压测报告中独立输出,而会被聚合作为事务控制器的结果呈现在报告中。生成父样本
          • 关闭开关:该事务控制器以及其包含的测试节点的压测结果均会显示在报告中。不生成父样本
        • 是否包含样品中定时器和前后程序的持续时间:若选择开启此开关,则压测报告中事务控制器的平均响应时间为所有测试节点、定时器以及前后置处理器的平均响应时间之和。若不开启此开关,则事务控制器的平均响应时间仅为所有测试节点平均响应时间之和。
    • 场景配置页签下,单击+添加定时器选择所需的定时器。
      • 常量定时器:可设置停顿时长,表示压测过程中,在此处停顿的时长,单位为毫秒。
        如下图所示,压测时,会在完成第一次请求响应后,停顿2000毫秒,再进行下一次请求响应。常量定时器
      • 同步定时器:可设置停顿时长模拟用户数,表示在一定时间内先等待达到一定用户数然后触发测试,但若在设定时间内未达到指定用户数,则不会继续等待,直接触发测试。
        如下图所示,请求响应测试节点下的同步定时器的停顿时长为5000毫秒,模拟用户数为5。这表示在5秒内,会先等待模拟测试用户达到5个后进行请求响应测试,但若在5秒后模拟测试用户数未达到5个,则会直接进行请求响应测试。同步定时器
  6. 单击施压配置页签,设置WebSocket的压测模式。
    压测配置 描述
    压力来源 本次压测使用的网络类型,包括国内公网阿里云VPC内网两种类型。
    说明 若选择使用阿里云VPC内网进行压测,则还需选择地域。
    并发数 指同时发送压测请求的用户数量。最低设置为10,最高设置取所购买资源包的最高并发规格。
    指定IP数 指定施压引擎的数量。若增加施压引擎,则计费也会相应增加。计费规则为计费VUM=引擎数×500×压测时长(分钟)。
    说明
    • 增加引擎数会使得计费增加,请关注施压配置页签右侧压力预估图的预估消耗VUM数。
    • 可设置的最大引擎数受资源包限制,具体信息,以控制台的指定IP数为准。
    • 为合理利用资源,增加后的引擎数不超过200且不超过配置的并发数。
    • 若无法满足需求,请提交工单申请扩容。
    压测时长 建议压测时长不低于2分钟,总时长默认不可超过24小时。如有特殊需求,请提交工单
    流量模型 压测的流量模型包含以下三种:
    • 均匀递增:从0开始均匀递增,达到最大并发后按照最大并发持续施压,不可指定循环次数。
    • 阶梯递增:从0开始按照递增阶梯逐步递增,达到最大并发后按照最大并发并持续施压。不可指定循环次数。
    • 固定压力值:以配置的固定并发值进行施压。
  7. 可选:创建场景页面下方,单击调试场景,对配置的场景进行调试,验证配置是否正确。
  8. 单击保存去压测,在对话框中单击确定

后续步骤

查看压测报告。具体操作,请参见查看WebSocket压测报告