JMeter进行WebSocket压力测试

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

背景


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

JMeter 扩展实现 WebSocket 支持


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

安装 WebSocketSampler 插件


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

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

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

ServiceSocket.java 中的

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

一行即可。

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

https://stackoverflow.com/questions/16152648/websocket-plugin-for-jmeter

https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/21

  • 下载相关额外的依赖,并将他们也拷贝到 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 的测试脚本


新建线程组


创建循环控制器


添加 WebSocket Sampler


添加查看结果树


添加聚合报告


配置 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 的连接信息:

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

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

运行输出结果


通过聚合报告看性能


  • Samples:样本总数量,等于线程总数 * 循环次数。
  • Average:请求处理的平均时间(毫秒ms),是压力测试的主要指标之一 。
  • Median:请求处理的中值时间(毫秒ms),样本数量中有一半的处理时间在这个值之上,有一半的处理时间在这个值之下。
  • 90%Line,95%Line,99%Line:样本中百分之多少的处理时间都在这个值之下,是压力测试的主要指标之一。
  • Min:耗时最少的请求时间。
  • Max:耗时最多的请求时间。
  • Error%:错误率。
  • Throughput:吞吐量,服务器每秒处理的请求数。
  • KB/sec:服务器每秒钟请求的字节数。
相关文章
|
8月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
1025 0
|
7月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
1584 10
|
7月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
1060 0
|
9月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1323 23
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
561 3
|
9月前
|
弹性计算 JavaScript Ubuntu
WebSocket协议相关的测试命令工具使用简介
本文介绍了针对WebSocket的测试工具wscat和websocat的基本使用方法,以及通过curl命令测试HTTP/HTTPS协议的方式。对于WebSocket,直接使用curl测试较为复杂,推荐使用wscat或websocat。文中详细说明了这两种工具的安装步骤、常用参数及连接示例,例如在ECS上开启8080端口监听并进行消息收发测试。此外,还提供了curl命令的手动设置头部信息以模拟WebSocket握手的示例,但指出curl仅能作为客户端测试工具,无法模拟服务器。
2938 4
|
11月前
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
536 1
Jmeter如何对UDP协议进行测试?
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
823 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
608 3

热门文章

最新文章