专栏首页云原生压测团队Jmeter对WebSocket协议进行压测
原创

Jmeter对WebSocket协议进行压测

背景说明

目前市面上的协议种类繁多,我们可以通过Jmeter添加插件实现脚本编写,这里以WebSocket协议的业务压测为例来说明。

WebSocket的插件较多,本文以JMeter WebSocket Samplers为例来进行压测。JMeter WebSocket Samplers具有以下特性:

  • 提供 6 个不同的 WebSocket 采样器
  • 采样器不会创建额外的线程,因此可以使用大量的 JMeter 线程,
  • 支持 wss(基于 TLS 的 WebSocket)
  • wss 支持与 JMeter 的 SSLManager 完全兼容,包括客户端证书
  • 支持二进制 WebSocket 帧
  • 用于检查二进制响应的断言
  • 在“查看结果树”中查看二进制结果
  • 与 JMeter 的 Header Manager 集成以在 WebScoket 升级请求上设置额外的 HTTP 标头
  • 在每次升级请求(即发起 WebSocket 连接的 HTTP 请求)时发送由 JMeter 的 Cookie Manager 定义的 cookie
  • 代理支持
  • 提供用于丢弃与测试无关的帧的过滤器
  • 许多示例 JMeter 测试计划说明了各种功能。

详细说明请参考JMeter WebSocket Samplers 插件介绍

步骤1:安装插件JMeter WebSocket Samplers

  1. 下载地址:JMeter WebSocket Samplers,建议下载最新版本。
  2. 将下载的插件 .jar包存放在<JMeter安装目录>/lib/ext路径下。
  3. 打开JMeter工具,查看插件是否安装成功:

线程组->添加->取样器,可以看到以下添加的采样器选择,具体说明如下:

采集器名称

说明

WebSocket Close

用于正常关闭 websocket 连接

WebSocket Open Connection

用于显式设置websocket连接

WebSocket Ping/Pong

用于发送ping和接收pong请求

WebSocket Single Read Sampler

用于接收一个(文本或二进制)WebSocket 帧

WebSocket Single Write Sampler

用于发送一个(文本或二进制)WebSocket 帧

WebSocket request-response Sampler

用于执行基本的请求-响应请求

步骤2:采集器使用

下面对JMeter WebSocket Samplers各采集器的配置与使用进行说明

  1. 首选创建一个线程组,添加到测试计划中,添加->线程(用户)->线程组
  2. 添加一个WebSocket Open Connection采集器,线程组->添加->取样器->WebSocket Open Connection,该采集器为建立WebSocket连接

相关配置说明:

配置项

说明

协议

协议可以是WS或WSS,WSS是进行加密连接。

Server name or IP

域名或IP地址

Port

端口号

Path

路径,可为空

Connection timeout(ms)

建连的超时时间

Read timeout(ms)

等待服务器响应的超时时间

3. 添加一个WebSocket Ping/Pong采集器,线程组->添加->取样器->WebSocket Ping/Pong,该采集器用于发送ping和接收 pong请求

相关配置说明:

配置项

说明

ping/pong(send ping,expect pong)

用于发送ping和接收pong

pong(just send pong)

仅发送未经请求的pong

pong(read) timeout(ms)

表示如果JMeter在20秒内没有收到Pong消息,则Sampler将失效。此Sampler会复用已有连接

4. 添加一个WebSocket Single Read Sampler采集器,线程组->添加->取样器->WebSocket Single Read Sampler,用于接收一个(文本或二进制)WebSocket 帧

配置项

说明

use existing connection

复用已有连接

setup new connection

创建新的连接

Response (read) timeout (ms)

响应超时时间

5. 添加一个WebSocket Single Write Sampler采集器,线程组->添加->取样器->WebSocket Single Write Sampler,用于发送一个(文本或二进制)WebSocket 帧

配置项

说明

use existing connection

复用已有连接

setup new connection

创建新的连接

Request data

填写请求数据

6. 添加一个WebSocket request-response Sampler采集器,线程组->添加->取样器->WebSocket request-response Sampler,用于执行基本的请求-响应请求

配置项

说明

use existing connection

复用已有连接

setup new connection

创建新的连接

Request data

填写请求数据

Response (read) timeout (ms)

响应超时时间

7. 添加一个WebSocket Close采集器,线程组->添加->取样器->WebSocket Close,用于正常关闭 websocket 连接

配置项

说明

Close Status

关闭连接时定义的状态码,数据帧的头两个字节

Response (read) timeout (ms)

响应超时时间

8. 右键单击线程组,选择添加 -> 监听器 -> 查看结果树,在线程组中添加监听器查看结果树,用于接收服务端的消息响应。

步骤3:脚本执行

根据上面步骤二选择需要的采集器进行脚本编辑完成后,单击页面顶部的开始按钮,运行脚本。

通过查看结果树查看脚本是否运行正常。在左侧导航树中,选择查看结果树,查看请求结果是否符合预期。如果出现请求失败的,需要根据步骤二重新调整脚本。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jmeter对基于websocket协议的压力测试

    WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。

    流柯
  • Jmeter 压测 ws(s)

      上一篇Jmeter压测http(s)介绍了如何使用Jmeter压测常规的web服务接口。本文将继续演示如何使用Jmeter对ws(s)进行压力测试。

    happyJared
  • 性能工具之Jmeter压测Hprose RPC服务

    源代码:https://github.com/hprose/hprose-java

    高楼Zee
  • 基于websocket接口的jmeter自动化测试实践(1)

    自动化测试对于小团队来说非常重要,特别是技术负责人更偏向于用技术解决问题时(习惯用管理解决问题时,可能会用手动+人海方式)。

    陶辉
  • Websocket之Jmeter压力测试 原

        最近使用到Websocket进行聊天功能开发,用Jmeter进行压力测试,记录下。

    克虏伯
  • 【JMeter系列-10】JMeter websocket接口测试

    在一个网站中,很多数据需要即时更新,比如期货交易类的用户资产。在以前,这种功能的实现一般使用http轮询,即客户端用定时任务每隔一段时间向服务器发送查询请求来获...

    云深i不知处
  • 13-Websocket协议与MQ协议

    Websocket和HTTP都是基于TCP协议的,所以使用抓包工具可以抓到websocket的数据

    zx钟
  • Jmeter实现WebSocket协议的接口测试方法

    WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。

    小老鼠
  • Jmeter4.0之介绍(一)

    Apache JMeter™应用程序是开放源码软件, 一个100% 纯 Java 应用程序, 旨在加载测试功能行为和测量性能。它最初设计用于测试 ...

    无涯WuYa
  • TCP三次握手

    TCP是Transmission Contro Protocol 传输控制协议, 是一种可靠的基于字节流的传输层通信协议.

    louiezhou001
  • 性能工具之Jmeter压测WebSocket接口(一)

    WebSocket是web客户端和服务器之间新的通讯方式,依然架构在HTTP协议之上。使用WebSocket连接,web应用程序可以执行实时的交互,而不是以前的...

    高楼Zee
  • go实现的压测工具【单台机器100w连接压测实战】

    本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、Jmeter、go实现的压测工具、云压测),对比这些压测工...

    link1st
  • JMeter全部组件概览

    JMeter是性能测试工具,在使用JMeter变多以后,越来越觉得之所以它能成为当今时代最主流测试工具,是因为它太成熟了,举个小例子,编写GET请求的时候,需要...

    dongfanger
  • JMeter扩展Java请求实现WebRTC本地音视频推流压测脚本

    WebRTC是Web Real-Time Communication缩写,指网页即时通讯,是一个支持Web浏览器进行实时语音或视频对话的API,实现了基于网页的...

    dongfanger
  • 10大主流性能测试工具推荐

    市面上流行的压力/负载/性能测试工具多是来自国外,近年来国内的性能测试工具也如雨后春笋崛起。同时由于开发的目的和侧重点不同,其功能也有很大差异,下面就为您简单介...

    jackey422
  • 腾讯TMQ在线沙龙回顾|性能测试

    腾讯移动品质中心TMQ
  • Grafana + InfluxDB 实现 Jmeter 压测的图形化监控

    本方案采用 Grafana + InfluxDB 实时展示 Jmeter 的压测数据,下面为本文实验的压测指标数据流向图。

    鲍远林
  • 使用 JMeter 进行压力测试

    晓晨
  • 使用 JMeter 进行压力测试

    压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据...

    庞小明

扫码关注云+社区

领取腾讯云代金券