JMeter实现持续压测websocket

1、安装插件:JMeter WebSocket Samplers

pjtr / JMeter WebSocket Samplers / Downloads — Bitbucketicon-default.png?t=N7T8https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/

将下载的Jar包放在安装jmeter的/lib/ext路径下,重启生效

查看测试计划--》配置元件--》webSocket相关内容

查看用户组--》取样器--》webSocket相关内容

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连接

注:

  • 因为WebSocket是长连接流式通讯,所以可能存在发送一个请求收到多条响应的情况。收到的响应会以先后顺序排在一个响应队列中。当执行一个有读操作的Sampler时,就从队列头部取出一个响应;每当收到一个响应时,就将其放到队列尾部。

  • WebSocket Single Read Sampler是一个只读Sampler,它只从队列头部读取一个响应,如果读不到就等待,直至超时。

  • WebSocket Single Write Sampler是一个只写Sampler,它只向连接通道发送一个请求且不等待响应。

  • WebSocket Request Response Sampler是一个读写Sampler,它向连接通道发送一个请求,然后从响应队列头部读取一个响应,如果读不到就等待,直至超时。

  • 如果放置的读Sampler和写Sampler数量不合适,可能会出现读到的数据错位的现象。

2、创建常规脚本

在JMeter页面中,右键单击Test Plan,选Add > Thread (Users) > Thread Group,将一个线程组添加到测试计划中。

右键单击Thread Group,选择Add > Sampler > WebSocket Open Connection,用于建立ws连接

  • 配置项

    示例值

    说明

    协议

    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功能。

设置 sampler

相关配置如下:

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。此请求是非阻塞的,只是将数据发送到服务端不需要等待响应。

websocket结果树二进制视图5

相关配置如下:

配置项

示例值

说明

Connection

use existing connection

创建新的连接或复用已有连接

数据类型

文本

指定数据类型、请求数据和响应超时值

Request data

PTS

请求数据,这里以文本为例

Response (read) timeout (ms)

6000

响应超时时间

右键单击 Thread Group,选择Add > Sampler > WebSocket Single Read Sampler。接收服务端的消息响应需要使用这个Sampler。

websocket结果树二进制视图6

相关配置如下:

配置项

示例值

说明

Connection

use existing connection

创建新的连接或复用已有连接

数据类型

文本

指定数据类型、请求数据和响应超时值

Response (read) timeout (ms)

6000

响应超时时间

右键单击Thread Group,选择Add > Sampler > WebSocket Close。接收服务端的消息响应需要使用这个Sampler。

websocket结果树二进制视图7

相关配置如下:

配置项

示例值

说明

Close Status

二进制

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

Response (read) timeout (ms)

6000

响应超时时间

此采样器将关闭现有的WebSocket连接,由于是协商关闭,显示原因为“1000:sampler requested close”。

右键单击Thread Group,选择Add Listener > View Results Tree,在线程组中添加监听器View Results Tree,查看请求响应状态。

3、优化脚本,模拟100个真实用户持续连接ws

开启100个线程同时登录并打开websocket

从文件中获取获取信息--》右键添加Config元素--》csv数据文件设置

登录后添加后置Json提取器,获取登录的token

添加后置处理器,将值存起来

1、存到文件里,后面再从文件读取

FileWriter fstream = new FileWriter("D:/Software/jmeter-5.4.3/bin/Myworkspace/token.csv",false);
//这里结尾的true表示续写,即数据每次写入都在最末行续上;默认值为false:每次跑这个脚本都会覆盖原有内容再写入
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("access_token")+","+"\n");
//将提取出来的token写入,注意加上\n换行
out.close();
fstream.close();

2、存到变量里

${__setProperty(access_token_new,${access_token},true)}

后面参数调用方式:${__property(access_token_new,,)}

开启一个websocket,注意设置连接超时时间,最多不超过10分钟,也就是这次压测最长10分钟

但是我们想让他持续的压测,token不失效就一直有100个用户的websocket在连接中

加一个循环器,一直循环的定时在自动断开websocket连接时再开一个连接。

到这里就整体完成了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/130239.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode(6)轮转数组【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 189. 轮转数组 1.题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1…

使用LLama和ChatGPT为多聊天后端构建微服务

微服务架构便于创建边界明确定义的灵活独立服务。这种可扩展的方法使开发人员能够在不影响整个应用程序的情况下单独维护和完善服务。然而,若要充分发挥微服务架构的潜力、特别是针对基于人工智能的聊天应用程序,需要与最新的大语言模型(LLM&…

如何使用HadSky搭配内网穿透工具打造个人站点并公网访问

🌈个人主页:聆风吟 🔥系列专栏:Cpolar杂谈、数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 前言一. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 二. 本地网页发…

ARM IMX6ULL 基础学习记录 / ARM 寄存器介绍

编辑整理 by Staok。 本文大部分内容摘自“100ask imx6ull”开发板的配套资料(如《IMX6ULL裸机开发完全手册》等等),侵删。进行了精髓提取,方便日后查阅。过于基础的内容不会在此提及。如有错误恭谢指出! 注&#xf…

ChatGPT-4:OpenAI的革命性升级

在人工智能领域,OpenAI这家公司凭借其创新性的技术,成为了备受瞩目的领导者。他们最近发布的ChatGPT-4,以其卓越的语言处理能力和先进的模型架构,引领了语言模型领域的革命性升级。 ChatGPT-4的模型容量相较于前一版本有了显著的提…

LeetCode(5)多数元素【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 169. 多数元素 1.题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示…

classification_report分类报告的含义

classification_report分类报告 基础知识混淆矩阵(Confusion Matrix)TP、TN、FP、FN精度(Precision)准确率(Accuracy)召回率(Recall)F1分数(F1-score) classi…

离散Hopfield神经网络分类——高校科研能力评价

大家好,我是带我去滑雪! 高校科研能力评价的重要性在于它对高等教育和科研体系的有效运作、发展和提高质量具有深远的影响。良好的科研能力评价可以帮助高校识别其在不同领域的强项和薄弱点,从而制定战略,改进教学和科研&#xff…

LeetCode 17. 电话号码的字母组合 中等

题目 - 点击直达 1. 17. 电话号码的字母组合 中等1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 3. 知识与收获 1. 17. 电话号码的字母组合 中等 1. 题目详情 1. 原题链接 LeetCode 17. 电话号码的字母组合 中等 2. 题目要…

海外跨境电商商城源码,开启多语言多货币多商家入驻的电商新时代!

尊敬的CSDN用户们,你们好!我们很高兴地向您介绍一款引领未来电商潮流的全新产品——海外跨境电商商城源码!这款源码将为您打开多语言、多货币、多商家入驻的电商新时代,让您轻松打造出属于自己的跨境电商平台! 一、多语言支持,轻松拓展全球市…

各种业务场景调用API代理的API接口教程(附带电商平台api接口商品详情数据接入示例)

API代理的API接口在各种业务场景中具有广泛的应用,本文将介绍哪些业务场景可以使用API代理的API接口,并提供详细的调用教程和代码演示,同时,我们还将讨论在不同场景下使用API代理的API接口所带来的好处。 哪些业务场景可以使用API…

免费小程序HTTPS证书

随着互联网的快速发展,小程序已经成为人们日常生活中不可或缺的一部分。然而,在小程序的开发和使用过程中,安全问题一直是开发者们关注的重点。其中,HTTPS 证书是保障小程序安全的重要工具之一。在这方面,免费的小程序…

Coding面试题之手写线程池

原理图 JDK线程池原理 实现代码 1.线程类&#xff08;PoolThread&#xff09; 这个类用于执行任务队列中的任务。 public class PoolThread extends Thread {private final Queue<Runnable> taskQueue;private boolean isStopped false;public PoolThread(Queue<…

P6入门:项目初始化2-项目详情之日期Date

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…

Azure 机器学习 - 有关为 Azure 机器学习配置 Kubernetes 群集的参考

目录 受支持的 Kubernetes 版本和区域建议的资源计划ARO 或 OCP 群集的先决条件禁用安全增强型 Linux (SELinux)ARO 和 OCP 的特权设置 收集的日志详细信息Azure 机器学习作业与自定义数据存储连接支持的 Azure 机器学习排斥和容许最佳实践 通过 HTTP 或 HTTPS 将其他入口控制器…

Spring -Spring之依赖注入源码解析(下)--实践(流程图)

IOC依赖注入流程图 注入的顺序及优先级&#xff1a;type-->Qualifier-->Primary-->PriOriry-->name

缓存与数据库双写一致性几种策略分析

一、背景 在高并发场景中&#xff0c;为防止大量请求直接访问数据库&#xff0c;缓解数据库压力&#xff0c;常用的方式一般会增加缓存层起到缓冲作用&#xff0c;减少数据库压力。引入缓存&#xff0c;就会涉及到缓存与数据库中数据如何保持一致性问题&#xff0c;本文将对几…

HALSTM32通用定时器+EXTI实现单击/双击/长按功能

HALSTM32通用定时器EXTI实现单击/双击/长按功能 ✨在使用USB功率计的时候&#xff0c;发现上面的一个按键实现多画面功能切换&#xff0c;于是探索了一下是如何实现的&#xff0c;将其实现的基本思路以及综合网上收集的相关实现方法&#xff0c;粗陋的整理了一下&#xff0c;将…

【MSF服务】3389远程连接命令扩展

攻击机IP地址&#xff08;kali&#xff09;&#xff1a;192.168.200.14 靶子机IP地址&#xff08;windows 10&#xff09;&#xff1a;192.168.200.81 前提&#xff1a;获取目标主机系统权限之后的操作 远程连接桌面 rdesktop -u username -p password iprdesktop报错 解决…

Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构

目录 一、用于训练的数据架构图像分类&#xff08;二进制/多类&#xff09;多标签图像分类对象检测实例分段 二、用于联机评分的数据架构输入格式输出格式图像分类&#xff08;二进制/多类&#xff09;多标签图像分类对象检测实例分段 在线评分和可解释性 (XAI) 的数据格式支持…