jmeter进行websocket 通信
最近项目弄了基于websocket的通信接口,所以需要做一个websocket的接口压测。
jmeter当前自带的插件无法进行jmeter接口的通信,所以 本人是下载的一套jar包插件,进行的安装
1、插件下载地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.0.0.6cfd2486vZsEcu
2、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 测试计划说明了各种功能
3、将下载的插件 .jar包存放在<JMeter安装目录>/lib/ext路径下。
4、插件名称与说明
|
采集器名称 |
说明 |
|---|---|
|
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 |
用于执行基本的请求-响应请求 |
5、在jmeter中创建线程组-add-sampler
6、这些插件就是进行websocket通讯,首先设置open Connection进行建立连接

1、websocket分为:ws\wss,相当于 http\https的区别
2、输入socket地址或ip地址
3、端口号
4、接口路径
7、创建查看结果树,在结果树中查看返回结果
关于本文没有涉及的代理、过滤、分片等信息,请参见 JMeter WebSocket Samplers 插件介绍。
操作步骤如下:
步骤一:安装插件 JMeter WebSocket Samplers
- 下载 JMeter WebSocket Samplers,建议下载最新版本。
- 将下载的插件 .jar 包存放在 <JMeter安装目录>/lib/ext 路径下。
注意 在 PTS 中发起压测时,此处下载的插件 .jar 包需要上传到 PTS。请参见步骤五:上传脚本、插件 JAR 包和其他文件至 PTS 进行压测。
- 重启 JMeter。
重启 JMeter 之后,按照以下步骤查看插件是否安装成功:
右键单击左侧导航树中的 Test Plan,选择 Add > Config Element,可看到新增的配件元件选项 WebSocket Binary Frame Filter、WebSocket Ping/Pong Frame Filter 和 WebSocket Text Frame Filter 。

右键单击左侧导航树中的 Test Plan,选择 Add > Assertions,可看到新增的断言选项 Binary Response Assertion。

右键单击左侧导航树中的 Test Plan,选择 Add > listener > View Results Tree,在编辑页面左下方的下拉列表中,可看到新增的选项 Binary。

右键单击左侧导航树中的 Test Plan,选择 Add > Threads(Users) > Thread Group ,右键单击 Thread Group,选择 Add > Sampler,可看到以下新增的采样器选项,具体说明如下。
Sampler 名称 说明 WebSocket Open Connection 建立一个 WebSocket 连接 WebSocket Ping/Pong 控制帧,发送 ping 并接收 pong WebSocket request-response Sampler 发送和接收文本或二进制 WebSocket 帧 WebSocket Single Write Sampler 发送文本或二进制 WebSocket 帧 WebSocket Single Read Sampler 接收文本或二进制 WebSocket 帧 WebSocket Close 关闭 Websocket 连接 下一步,需要配置这些 Sampler。
步骤二:创建脚本
下面将演示如何在测试场景中添加并配置 Sampler。以下为简单示例,您可以根据业务需要进行调整。
- 在 Jmeter 页面中,右键单击 Test Plan,选 Add > Thread (Users) > Thread Group,将一个线程组添加到测试计划中。
- 在线程组中依次添加采样器(Sampler),并进行配置。右键单击 Thread Group,选择 Add > Sampler > WebSocket Open Connection。当前的 Sampler 将建立 WebSocket 连接。
说明 我们以 Gateway Echo 服务来创建脚本(wss://echo.websocket.org) 。这是一个 Echo 服务,因此发送到此服务的所有消息都将回显给客户端。相关的配置如下:
配置项 示例值 说明 协议 WS 协议可以是 WS 或 WSS(Secure WebSocket)。使用 WSS 进行加密连接。 Server name or IP echo.websocket.org 域名或 IP Port 443 端口 Path - 可为空 Connection timeout(ms) 20000 建连的超时时间 Read timeout(ms) 6000 等待服务器响应的超时时间 - 右键单击 Thread Group,选择 Add > Sampler > WebSocket Ping/Pong。该 Sampler 用来测试 Ping/Pong 功能。
相关配置如下:
Pong(读)超时(ms):6000
Pong(读)超时表示如果 JMeter 在 6 秒内没有收到 Pong 消息,则 Sampler 将失效。此 Sampler 会复用已有连接。
- 右键单击 Thread Group,选择 Add > Sampler > WebSocket request-response Sampler。
相关配置如下:
配置项 示例值 说明 Connection use existing connection 创建新的连接或复用已有连接。 数据类型 文本 指定数据类型、请求数据和响应超时值。 Request data PTS 请求数据,这里以文本为例 Response(read)timeout(ms) 6000 响应超时时间 - 右键单击 Thread Group,选择 Add > Sampler > WebSocket Single Write Sampler 。此请求是非阻塞的,只是将数据发送到服务端不需要等待响应。
相关配置如下:
配置项 示例值 说明 Connection use existing connection 创建新的连接或复用已有连接 数据类型 文本 指定数据类型、请求数据和响应超时值 Request data PTS 请求数据,这里以文本为例 Response(read)timeout(ms) 6000 响应超时时间 - 右键单击 Thread Group,选择 Add > Sampler > WebSocket Single Read Sampler。接收服务端的消息响应需要使用这个 Sampler。
相关配置如下:
配置项 示例值 说明 Connection use existing connection 创建新的连接或复用已有连接 数据类型 文本 指定数据类型、请求数据和响应超时值 Response(read)timeout(ms) 6000 响应超时时间 - 右键单击 Thread Group,选择 Add > Sampler > WebSocket Close。接收服务端的消息响应需要使用这个 Sampler。
相关配置如下:
配置项 示例值 说明 Close Status 二进制 关闭连接时定义的状态码,数据帧的头两个字节 Response(read)timeout(ms) 6000 响应超时时间 此采样器将关闭现有的 WebSocket 连接,由于是协商关闭,显示原因为 “1000:sampler requested close”。
- 右键单击 Thread Group,选择 Add > Listener > View Results Tree,在线程组中添加监听器 View Results Tree。接收服务端的消息响应需要使用这个 Sampler。
步骤三:运行脚本
脚本编辑完成后,单击页面顶部的开始按钮,运行脚本。
通过 View Results Tree 监听器查看脚本是否运行正常。在左侧导航树中,选择View Results Tree,检查所有 Sampler 是否都配置正确并符合预期。在该监听器中,如果 Sampler 前面有绿色对勾表示运行正常。
如出现运行异常的 Sampler,请参见步骤二:创建脚本进行调试。
部分示例结果如下:
- WebSocket request-response Sampler
根据脚本配置,Request 信息如下:

根据脚本配置,Binary 格式的 Response data 如下:

- WebSocket Single Read Sampler
根据脚本配置,Text 格式的 Response data 如下:

根据脚本配置,Binary 格式的 Response data 如下:

步骤四:导出脚本
当本地脚本调试成功后,选择顶部菜单栏的 File > Save Test Plan as,将脚本文件保存至本地。
步骤五:上传脚本、插件 JAR 包和其他文件至 PTS 进行压测
您需准备以下文件,上传到 PTS:
- 导出的 JMeter 脚本(.jmx 文件)
- JMeter WebSocket Samplers 的 JAR 包
- 脚本中使用的其他数据文件
关于在 PTS 中压测的操作步骤,请参见 JMeter 压测。
jmeter进行websocket 通信的更多相关文章
- Jmeter实现WebSocket协议的接口和性能测试方法
WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一 ...
- Jmeter中Websocket协议支持包的使用
Jmeter中Websocket协议支持包的使用(转) 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan.cn/cFzwiyeQDKdh3 (提取码:9bcf)) 转自:ht ...
- 使用jmeter进行websocket协议压测
第一步:添加websocket sampler组件 可以使用plugins manager进行添加,首先下载plugins manager组件: 下载路径: https://jmeter-plugi ...
- jmeter 测试websocket接口(一)
jmeter 测试websocket接口时,需要对jmeter添加测试websocket的jar包. 下载地址: https://download.csdn.net/download/qq_14913 ...
- Jmeter中Websocket协议支持包的使用(转)
转自:http://blog.csdn.net/typing_yes_no/article/details/49512167 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan ...
- Jmeter进行webSocket接口测试
一.运行Jmeter (1) 去官方网站下载jmeter(版本为3.3)并解压.点击bin/jmeter.bat启动jmeter (2) 新建线程组. (3) 在线程组中新建WebSocket Sa ...
- jmeter中websocket接口测试
一.Websocket协议简介 Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说: HTTP协议: HTTP的生命周期通过 Request 来界定,也就是一个 Request ...
- jmeter 测试 websocket 接口
https://www.cnblogs.com/penghaihang/p/7724830.html(请求的亲测ok) https://www.jianshu.com/p/bb8b3e928607 h ...
- 『动善时』JMeter基础 — 50、使用JMeter测试WebSocket接口
目录 1.什么是WebSocket接口 2.为什么需要WebSocket 3.测试WebService接口前的准备 4.WebSocket Sampler组件界面详解 5.使用JMeter测试WebS ...
- C#(SuperWebSocket)与websocket通信
原文:C#(SuperWebSocket)与websocket通信 客户端代码 点击可以查看一些关于websocket的介绍 <!DOCTYPE html> <html> &l ...
随机推荐
- 将xlsx列表文件转为md列表
转换网站: https://tableconvert.com/ 在这篇文章中,我将告诉你如何快速的将Excel转换为markdown表格,以及如何将Google Docs,Numbers,网页中的表格 ...
- cookie设置失败
有个小项目,本地测试一帆风顺,昨天发布到云服务器后就出问题了 Java端设置的Cookie,浏览器访问不到 1-2022-2-11 设置cookie代码如下 /** * 添加Cookie * @par ...
- 题解P4474 王者之剑
双倍经验 简要题意 给你一个 \(n\times m\) 的网格,数字在格子里,你需要取出一些格子,使得任意两个格子之间没有公共边,输出格子中的数字和的最大值. \(1 \le n,m \le 100 ...
- 【转】C#接口知识
参考:日常收集 C# 接口知识 (知识全面) 目录 第一节 接口慨述 第二节 定义接口 第三节 定义接口成员 第四节.访问接口 第五节.实现接口 第六节.接口转换 第七节.覆盖虚接口 第一节 接口慨述 ...
- Longhorn+K8S+KubeSphere云端数据管理,实战 Sentry PostgreSQL 数据卷增量快照/备份与还原
云端实验环境配置 VKE K8S Cluster Vultr 托管集群 https://vultr.com/ 3 个 worker 节点,kubectl get nodes. k8s-paas-71a ...
- 使用linux命令直接在网上下载文件,解压,改名
举例: 我们想要在服务器某个路径下,下载一个node.js包 操作如下 假如文件地址为https://npm.taobao.org/mirrors/node/v16.9.1/node-v16.9.1- ...
- 一个项目配置多个GIT仓库,一个项目自由上传码云和GITHUB
- 构造方法-JavaBean
构造方法 当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值. 小贴士:无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法, 一旦自己定义了 ...
- touchke变化值小的解决办法
方法一,提高主频 方法二,减小充电时间. 方法三,充电电流减半(具体看RM手册touchkey章节) 建议测试时采样值维持在3000-4000 其实以上操作就是增大Y轴间隔,以增大按下和未按下时的采样 ...
- FLASH-CH32F103替换STM32F103 FLASH快速编程移植说明
因CH32F103 相对于STM32F103 flash 操作多了快速编程模式,该文档说明主要目的是为了方便客户在原先ST 工程的基础上实现flash 快速编程模式的快速移植. 1.在stm32f10 ...