问题:

我最近遇到了一个问题,该问题需要针对多个用户测试SockJs / Stomp Spring Websocket代理的性能。 由于WebSocket本质上是异步的,因此它比常规的http / https请求-响应测试更加棘手。

解:

好了,无需解释为什么Jmeter是执行这种测试的很好的工具,但是需要一个插件使用stomp协议与Jmeter建立与服务器的websocket连接。

在这里,我发现此插件非常有用,因为它确实处理了与服务器层建立Stomp协议连接的样板代码。

但是这个插件有一个局限性,一旦它创建了连接并订阅了一个websocket主题,它便进入睡眠状态,一旦它出来,它将在睡眠时间内打印所有接收到的消息并结束其执行。

这通常不适用于交互式应用程序,在这些应用程序中,我们的Websocket会根据其他用户的各种活动/当前用户执行的活动不断接收通知,而不会停止其他屏幕功能。

因此,我们需要对上述插件进行更改,以便websocket继续监听消息,而我们的应用程序继续执行其他各种活动。

实现方法非常简单:

a)更改SockJsSampler.java文件,以最后删除websocket的休眠和关闭。 它基本上是181和182行。

b)编写一个扩展AbstractJavaSamplerClient.java的新Java类。 该类负责侦听进入您的网络套接字的消息。

c)现在我们有2个Sampleres(一个用于websocket,一个用于从websocket监听,它们可以通过队列连接。在我的情况下,我使用ArrayBlockingQueue)

d)修改SockJsSampler以将消息放入此ArrayBlockingQueue中 。 这可以在handleframe方法中的插件的SockJsWebsocketSubscriptionHandler类中完成。

因此,想法是在线程组执行开始时创建一次Websocket连接,并继续用传入消息填充队列,并且在测试计划的各个点上,使用在(b)点中创建的新示例作为Jmeter Java Request Sampler来读取消息从队列中验证数据。

关于在websocket上接收消息所花费的时间,我们可以开始捕获自定义采样器启动时的时间,并减去接收到其预期消息时的时间。 使用SampleResult API的result.sampleStart()和result.sampleEnd()可以更轻松地完成此操作,当您从AbstractJavaSamplerClient扩展此类时,该方法将在runTest方法中继承。

注意 :如果要运行多于1个线程的线程组来模拟多个用户,则可能必须为每个线程设置1个ArrayBlockingQueue ,以便不同线程的侦听器无法读取消息。 这很重要,因为我们需要记住,我们只有1个websocket连接,所有线程都共享。 如果您打算让所有线程都拥有自己的websocket连接,那么您不必担心这一点。

翻译自: https://www.javacodegeeks.com/2019/08/websockets-jmeter-getting-performance-numbers.html

使用Jmeter的Websocket:获取性能数字相关推荐

  1. 性能进阶:使用JMeter进行websocket测试

    摘要 本次测试案例主要是分享如何使用JMeter进行websocket协议下的聊天接口性能测试. 包含websocket插件的下载安装.线程组及sampler的设置.csv参数化和组建分布式测试的方法 ...

  2. 性能进阶:使用JMeter进行websocket测试【建议收藏】

    本次测试案例主要是分享如何使用JMeter进行websocket协议下的聊天接口性能测试. 包含websocket插件的下载安装.线程组及sampler的设置.csv参数化和组建分布式测试的方法.如何 ...

  3. Jmeter实现WebSocket协议的接口和性能测试方法

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一 ...

  4. jmeter根据循环获取参数_jmeter forEach循环获取response参数值进行接口请求

    jmeter forEach循环获取response参数值进行接口请求 注意: 一,ForEach控制器 输入变量前缀:输入正则表达式变量的引用名称即可 Start index for loop(ex ...

  5. 使用JMeter测试WebSocket接口

    因为我之前对WebSocket接口也不是很了解,所以本篇文章先简单的概括的说明一下WebSocket的相关概念.在文章的后半部分,进行测试WebSocket接口的步骤说明. 1.什么是WebSocke ...

  6. 如何使用Jmeter对WebSocket进行压力测试

    01 环境准备 Jmeter对WebSocket协议的环境准备: 因为Jmeter本身不支持WebSocket协议的,所以需要安装第三方的插件JMeterWebSocketSampler-1.0.2- ...

  7. jmeter 测试websocket接口(一)

    jmeter 测试websocket接口时,需要对jmeter添加测试websocket的jar包. 下载地址: https://download.csdn.net/download/qq_14913 ...

  8. html通过WebSocket获取虎牙弹幕并展示

    WebSocket获取虎牙弹幕并展示 效果图 JWT 加密 通过 WebSocket 获取弹幕内容 html 模板 获取 appId 与 secret 完整代码 效果图 效果图: JWT 加密 参考 ...

  9. Jmeter对webSocket测试

    Jmeter对webSocket压测以及观察 Jmeter压测工具 之前用WebSocket开发了消息的即时推送功能,也了解WebSocket的连接是比较占内存的,如果管理不好连接数,很容易触发jvm ...

最新文章

  1. Javascript用递归的方式遍历json数组
  2. Selenium自动化测试框架
  3. 小酌重构系列[19]——分解大括号
  4. QT的QStandardItemEditorCreator类的使用
  5. html关于拖放叙述错误,CIW页面设计与制作HTML附答案
  6. Javascript调试之console对象,它的一些小技巧你都知道吗?
  7. Linux综合练习——课件分发
  8. 氢离子浓度指数(ph值)
  9. cnblogs 博客园模板技巧
  10. VB.Net程序设计:分页控件
  11. RS485/RS422接线图
  12. hive大作业-餐饮外卖平台数据分析
  13. MIPI-DSI学习笔记(一)
  14. 点击识别元素位置、生成显示二维码、下载二维码
  15. Bash Shellshock(Bash远程代码执行)漏洞分析及利用思路
  16. Win10的两个实用技巧系列之设置鼠标指针、红警玩不了怎么办?
  17. 你有用过 Github 的 Gist 吗?
  18. BWA and Bowtie
  19. linux对磁盘的命名原则,linux多磁盘卷命名方式
  20. 测试分享之集五福 福卡的分享

热门文章

  1. GDOI2018-《被虐记》
  2. 【bfs】重力球(luogu 7473/NOI Online 2021 普及组 T3)
  3. 【Splay】文艺平衡树(金牌导航 Splay-2)
  4. Linux下查找命令
  5. SSL / TLS 协议运行机制详解
  6. Java集合(实现类线程安全性)
  7. 解决“Maven项目中的Dynamic Web Module 3.0 requires Java 1.6 or newer”问题
  8. 直面Java第45期
  9. StringTokenizer的使用
  10. @Controller,@Service,@Repository,@Component详解