JMeter进行WebSocket压力测试

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

背景


之前两篇内容介绍了一下 WebSocket 和 SocketIO 的基础内容。之后用 Netty-SocketIO 开发了一个简单的服务端,支持服务端主动向客户端发送消息,同时也支持客户端请求,服务端响应方式。本文主要想了解一下服务端的性能怎么样,选择使用 JMeter 对 WebSocket 应用进行性能测试。

JMeter 扩展实现 WebSocket 支持


JMeter 是目前最为流行的开源性能测试工具,JMeter 本身提供的基于插件的机制允许第三方实现标准 JMeter 所不支持的协议,而 WebSocket 的一个比较好的实现是 WebSocketSampler 。利用此插件,能完成基于 WebSocket 协议的基本性能测试。

安装 WebSocketSampler 插件

  • 通过插件地址 Releases · fshutdown/JMeter-WebSocketSampler · GitHub 下载最新版本(目前版本是1.0.2),本项目的源码是用 Maven 管理,直接通过 mvn package 就能生成 jar 包,然后将其拷贝到 JMeter 安装目录的 $JMETER_HOME/lib/ext 下。在生成 jar 包前要先对源码进行一点修改,因为在测试的时候报错,如下图:

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 很简单,用下面的代码替换

Queue<String> responeBacklog = new ConcurrentLinkedQueue<String>();

ServiceSocket.java 中的

protected Deque<String> responeBacklog = new LinkedList<String>();

一行即可。

java.util.LinkedList\$ListItr.checkForComodification(LinkedList.java:953)异常解决方案参考地址:

WebSocket plugin for Jmeter - Stack Overflow

Concurrent Modification · Issue #21 · fshutdown/JMeter-WebSocketSampler · GitHub

  • 下载相关额外的依赖,并将他们也拷贝到 JMeter 安装目录的 $JMETER_HOME/lib/ext,如下:
  1. jetty-http-9.1.1.v20140108.jar
  2. jetty-io-9.1.1.v20140108.jar
  3. jetty-util-9.1.1.v20140108.jar
  4. websocket-api-9.1.1.v20140108.jar
  5. websocket-client-9.1.1.v20140108.jar
  6. websocket-common-9.1.1.v20140108.jar

注意版本号要写插件项目里的版本一致,我在最开始使用上面的 jar 包时用的最新版本,报错。

如果没有上面的6个 jar 包,在进行测试的时候同样也会报错。

配置 JMeter 的测试脚本


新建线程组

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 创建循环控制器

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试 

 文章来源地址https://www.toymoban.com/news/detail-572218.html

添加 WebSocket Sampler

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

添加查看结果树

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 

添加聚合报告

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 

配置 WebSocket Sampler

  • Server Name or IP:部署 WebSocket 应用所在的服务器地址;
  • Port Number:端口号;
  • Timeout:Connection,连接超时,超过此时间未建立连接则测试报错;Response,发送消息后的超时时间;
  • Implementation:现在只支持 RFC6455;
  • Protocol:ws 或者 wss。wss 指的是加密的 WebSocket,根据被测的配置而定;
  • Path:所部署 WebSocket 服务的路径;
  • Streaming connection:测试期间是否重用连接,如果处于非选中状态,每次得到服务器端的返回后就会关闭连接,下次执行时会新建连接;
  • Request Data:发送出去的数据 —— 下面重点说怎么发送数据与接收数据;
  • Response pattern:等待服务器返回的特定的字符集合;否则等待Response Timeout设定的超时时间;
  • Close Connection Pattern:与8类似,但是符合条件的时候连接将被关闭;
  • Message Backlog:定义最多留下的返回消息的数目。
发送与接收数据

  • 在 chrome 的调试模式下可以找到 WebSocket 的连接信息:

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

  •  查看发送的信息内容,右键可以进行 copy

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 

  • 根据上面的 ws 连接信息配置 WebSocket Sampler

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试 

运行输出结果

JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 JMeter进行WebSocket压力测试,jmeter,websocket,压力测试

 

通过聚合报告看性能


  • Samples:样本总数量,等于线程总数 * 循环次数。
  • Average:请求处理的平均时间(毫秒ms),是压力测试的主要指标之一 。
  • Median:请求处理的中值时间(毫秒ms),样本数量中有一半的处理时间在这个值之上,有一半的处理时间在这个值之下。
  • 90%Line,95%Line,99%Line:样本中百分之多少的处理时间都在这个值之下,是压力测试的主要指标之一。
  • Min:耗时最少的请求时间。
  • Max:耗时最多的请求时间。
  • Error%:错误率。
  • Throughput:吞吐量,服务器每秒处理的请求数。
  • KB/sec:服务器每秒钟请求的字节数。

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

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

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

相关文章

  • 压力测试:使用 JMeter 进行压力测试

    创建新目录 jmeter_demo 在该目录下打开命令行输入: shell 复制代码 go mod init jmeter_demo go mod tidy 随后创建各目录与文件如下: shell 复制代码 -- jmeter_demo -- main main 函数目录(启动http和grpc服务) -- main.go -- proto grpc server 的目录 -- chat.go -- chat.pb.gp -- chat.proto -- test_plan jmeter 测试计划 --

    2024年04月16日
    浏览(42)
  • Jmeter接口测试-websocket测试

    壹 Jmeter接口测试-websocket测试 测试之前的准备工作,需要websocket插件 方式一: 去github下载: https://github.com/maciejzaleski/JMeter-WebSocketSampler/wiki/Dependencies jetty-http-9.1.2.v20140210.jar jetty-io-9.1.2.v20140210.jar jetty-util-9.1.2.v20140210.jar websocket-api-9.1.1.v20140108.jar websocket-client-9.1.1.v20140108.jar websoc

    2024年02月06日
    浏览(57)
  • 什么是压力测试?如何进行Jmeter压力测试

    软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。 常用的压力测试软件有:LoadRunner、Apache JMeter、NeoLoad、

    2024年02月11日
    浏览(62)
  • JMeter websocket接口测试

    前言 在一个网站中,很多数据需要即时更新,比如期货交易类的用户资产。在以前,这种功能的实现一般使用http轮询,即客户端用定时任务每隔一段时间向服务器发送查询请求来获取最新值。这种方式的弊端显而易见: 有可能造成数据更新不及时,如果前端轮询频率为5s,

    2024年02月16日
    浏览(43)
  • 【接口测试】JMeter测试WebSocket接口

    目录 一、WebSocket简介 二、JMeter测试WebSocket接口 三、WebSocket和Socket的区别 最近老被问到WebSocket,突然想到以前大学时上Java课的时候,老师教我们socket连接,一个同学电脑做客户端,一个同学电脑做服务端,当双方消息发送成功,第一次感觉到代码的奇妙~ 毕竟抄代码都不利索

    2024年02月08日
    浏览(53)
  • jmeter如何测试websocket接口?

    jmeter做接口测试,很多人都是做http协议的接口,就有很多人问websocket的接口怎么测试啊? 首先,我们要明白,websocket接口是什么接口。 然后,我们怎么用jmeter测试? jmeter要测试websocket接口,需要先下载安装一个websocket samplers by peter doornbosch 的插件,插件安装成功后,再次

    2024年02月08日
    浏览(46)
  • 使用JMeter 进行压力测试

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

    2024年02月16日
    浏览(50)
  • 使用Jmeter进行压力测试

    参考地址: https://blog.cs

    2024年02月13日
    浏览(43)
  • 使用jmeter进行简单压力测试

    最近项目要上线,需要项目进行简单的压力测试,本次使用的是jmeter来进行的,由于本人不是专业测试,只是对本次使用过程进行简单的记录. 一.jemeter的下载与安装 我这个已经安装很久了,具体过程这个可以查询下其他博客(偷个懒). 二.使用过程 1.测试计划右击-添加(add)-线程(thre

    2024年02月04日
    浏览(44)
  • JMeter系列4-使用JMeter进行压力测试,计算吞吐量

    1、随着线程的增加,throughout不变了,再增加,只能延时增长了,说明已经达到最大QPS 2、很好推断,一个进程一次接口的响应时间是500ms,那么一个进程的qps为2,四个进程的qps就是8 参考:https://blog.csdn.net/Le_1M/article/details/121105877 2.添加Constant Throughput Timer(常量吞吐量定时器)

    2023年04月08日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包