JMeter实现持续压测websocket

这篇具有很好参考价值的文章主要介绍了JMeter实现持续压测websocket。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、安装插件:JMeter WebSocket Samplers

pjtr / JMeter WebSocket Samplers / Downloads — Bitbuckethttps://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/

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

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

websocket压测,Python实践,websocket,jmeter,压力测试

查看用户组--》取样器--》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连接

websocket压测,Python实践,websocket,jmeter,压力测试

  • 配置项

    示例值

    说明

    协议

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

websocket压测,Python实践,websocket,jmeter,压力测试

相关配置如下:

Pong(读)超时(ms):6000

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

右键单击Thread Group,选择Add > Sampler > WebSocket request-response Samplerwebsocket压测,Python实践,websocket,jmeter,压力测试

  • 相关配置如下:

    配置项

    示例值

    说明

    Connection

    use existing connection

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

    数据类型

    文本

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

    Request data

    PTS

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

    Response (read) timeout (ms)

    6000

    响应超时时间

右键单击Thread Group,选择Add > Sampler > WebSocket Single Write Sampler。此请求是非阻塞的,只是将数据发送到服务端不需要等待响应。

websocket压测,Python实践,websocket,jmeter,压力测试

相关配置如下:

配置项

示例值

说明

Connection

use existing connection

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

数据类型

文本

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

Request data

PTS

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

Response (read) timeout (ms)

6000

响应超时时间

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

websocket压测,Python实践,websocket,jmeter,压力测试

相关配置如下:

配置项

示例值

说明

Connection

use existing connection

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

数据类型

文本

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

Response (read) timeout (ms)

6000

响应超时时间

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

websocket压测,Python实践,websocket,jmeter,压力测试

相关配置如下:

配置项

示例值

说明

Close Status

二进制

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

Response (read) timeout (ms)

6000

响应超时时间

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

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

websocket压测,Python实践,websocket,jmeter,压力测试

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

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

websocket压测,Python实践,websocket,jmeter,压力测试

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

websocket压测,Python实践,websocket,jmeter,压力测试

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

websocket压测,Python实践,websocket,jmeter,压力测试

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

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

websocket压测,Python实践,websocket,jmeter,压力测试

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分钟

websocket压测,Python实践,websocket,jmeter,压力测试

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

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

websocket压测,Python实践,websocket,jmeter,压力测试

到这里就整体完成了文章来源地址https://www.toymoban.com/news/detail-756900.html

到了这里,关于JMeter实现持续压测websocket的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • jmeter工具测试和压测websocket协议【杭州多测师_王sir】

    jmeter工具测试和压测websocket协议【杭州多测师_王sir】

    一、安装JDK配置好环境变量,安装好jmeter 二、下载WebSocketSampler发送请求用的 ,地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.2.15.363f211bH03KeI 下载解压后的jar包放到D:JMeterapache-jmeter-3.3libext目录下 三、如果需要在jmeter中安装那么就需要下载jmeter的插件

    2024年02月13日
    浏览(12)
  • 搭建Jmeter分布式压测与监控,轻松实践

    搭建Jmeter分布式压测与监控,轻松实践

    对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题;如果当前架构快达到性能瓶颈了,是横向扩容性能提升大,还是纵向扩容性能提升大。 如果需要了解这些

    2024年02月08日
    浏览(11)
  • Jmeter 实现 grpc服务 压测

    Jmeter 实现 grpc服务 压测

    网上有很多安装与配置文章,在此不做赘述 插件下载地址:JMeter Plugins :: JMeter-Plugins.org  将下载文件解压后放到Jmeter安装目录下  /lib/ext  然后在终端输入 Jmeter 即可打开 Jmeter GUI界面。 1)添加线程组:右键单击测试计划 → 添加 → 线程(用户) → 线程组 2) 添加GRPC Request:

    2024年02月08日
    浏览(6)
  • Jmeter实现多用户压测

    Jmeter实现多用户压测

    目录 1、什么是多用户压力测试 1.1 压力测试的重要性 1.2 JMeter简介 2、创建测试计划 2.1 线程组设置 2.2 添加HTTP请求 2.3 添加断言和监听器 3、配置多用户场景 3.1 用户数和循环次数 3.2 随机延迟和用户数据 4、运行测试 4.1 启动测试 4.2 查看结果 5、分析和优化 5.1 查看性能报告

    2024年02月11日
    浏览(12)
  • 基于docker实现JMeter分布式压测

    基于docker实现JMeter分布式压测

    在工作中经常需要对一些关键接口做高QPS的压测,JMeter是由Java 语言开发,没创建一个线程(虚拟用户),JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并发。所以,通过JMeter实现分布式,可以整合多台主机的硬件资源,实现同时对被测

    2024年02月07日
    浏览(11)
  • 利用 docker 实现JMeter分布式压测

    利用 docker 实现JMeter分布式压测

    在工作中经常需要对一些关键接口做高QPS的压测,JMeter是由Java 语言开发,没创建一个线程(虚拟用户),JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并发。所以,通过JMeter实现分布式,可以整合多台主机的硬件资源,实现同时对被测

    2024年02月05日
    浏览(19)
  • 针对 WebSocket 协议的 Locust 压测脚本实现(基于 Locust 1.0 以上版本)

    针对 WebSocket 协议的 Locust 压测脚本实现(基于 Locust 1.0 以上版本)

    前言: 嗨咯铁汁们,很久不见,我还是你们的老朋友凡叔,这里也感谢各位小伙伴的点赞和关注,你们的三连是我最大的动力哈,我也不会辜负各位的期盼,这里呢给大家出了一个针对 WebSocket 协议的 Locust 压测脚本   Locust 默认支持 HTTP 协议(默认通过 HttpUser 类),我们也

    2023年04月08日
    浏览(7)
  • 如何实现搭建 JMeter + Jenkins + Ant 持续化?

    如何实现搭建 JMeter + Jenkins + Ant 持续化?

    一、实现逻辑步骤: 1、本机安装ant; 2、jenkins中安装ant插件; 3、创建ant的build.xml; 4、在jenkins的job 中的调用ant插件: 1)运行build.xml 2)jenkins调用ant执行jmeter脚本 3)并用ant生成测试报告; 4)将报告存储到指定目录; 5、E-mail插件(Editable Email Notification) 1)系统设置中配置

    2024年02月19日
    浏览(13)
  • jmeter随记2:压测

    jmeter随记2:压测

    简述 关于压测,jmeter更直观的作用是用来编写压测脚本【请求和压测策略】,然后在linux服务器上执行,也可以在本地执行,压测执行脚本在启动jmeter服务的时候,会打印出执行压测的命令 一、压测步骤 step1: 编写jmeter脚本,以及压测策略 a、若想压的接口很多 且都是相同域

    2024年02月15日
    浏览(24)
  • 压测工具Jmeter学习

    压测工具Jmeter学习

    Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。 除了Jmeter外,其它常

    2024年02月10日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包