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

news2024/11/15 11:12:32

 

本次测试案例主要是分享如何使用JMeter进行websocket协议下的聊天接口性能测试。

包含websocket插件的下载安装、线程组及sampler的设置、csv参数化和组建分布式测试的方法、如何通过调整参数来获得发压机的最大并发数以及对测试过程的总结。

整篇文章只侧重介绍进行websocket测试的思路,对具体工具的使用步骤较少着墨,因为网上已有不少相关介绍文章。

希望本篇文章可以对其他正准备用JMeter进行websocket测试的读者提供一些参考。本人水平有限,如有错误恳请批评指正,感谢!

正文

最近收到一个任务,需要对公司的即时通讯服务端进行压测及聊天接口性能测试,这款即时通讯软件的客户端是通过websocket协议与服务端通信的。

但我之前只做过http协议的测试,websocket协议还是第一次。于是我在网上搜索websocket协议的压测工具,一番比较后选中了JMeter。

选择JMeter的原因有以下几点:

1.JMeter是一款免费开源的软件,有成熟的社区及插件管理工具,满足用户的各种需求。

2.JMeter包含windows、mac、linux多平台版本,对发压机支持较好。

3.JMeter支持GUI和CLI两种操作模式,配置分布式压测步骤简单快捷。

网上有很多关于JMeter的安装使用说明,这里我就不再赘述直接进入websocket的相关测试工作。

安装插件

JMeter不自带websocket功能,需要安装插件,这个插件直接安装最新的就行了,我用的是1.2.8版本。

将下载好的jar包放在JMeter目录下的lib/ext里,然后打开JMeter将websocket sampler勾选上再重启JMeter就安装好JMeterWebsocketSampler插件了。

新建线程组和sampler

这里我先把发压机的线程数设置为100,所有线程立即初始化,运行5分钟。

发压机支持的最大线程数跟发压机的配置有关,我的机器配置是6核12线程,能够设置的最大线程数是160,再多就会运行报错。

但是我的机器线程设置超过100后发送速度也不再增加,想知道自己发压机刚好到达最大发送速度时的线程数,可以设置ramp-up period,比如设置60秒,120个线程,就是平均每秒初始化两个线程,到第60秒时刚好全部初始化完毕

我自己测试从50秒往后发送速度就不再增加了,所以就设置为100了。

然后添加websocket connection sampler、websocket send sampler、websocket connection close sampler,分别用于建立连接、发送请求、断开连接操作。

由于是压测案例,所以我用到了Loop Controller,可以用于控制sampler的循环次数,并且客户端只管发送,不接收服务端的响应,因为我依靠另一端实际接收到的消息数判断发送是否成功,这样可以避免等待响应阻塞进程。

我的配置如图所示:

 我把infinite勾选上了,表示在5分钟的压测时间内让sampler不限次数地循环,这样可以测出sampler在指定时间内能够完成的最大次数。

CSV参数化

对于JMeter来说,每一个线程就是一个用户,所以设置100个线程就需要100个测试用户的账号、密码及发送数据。

添加CSV DATA Set Config步骤,csv的配置我这里不再赘述,不过需要说明的是测试服务端处理聊天消息的性能,最好是多组一对一聊天这样的设置,比如我的就是50个用户分别给另外50个用户发送消息,这样符合真实使用场景,也能测出服务端的真实性能。

分布式测试

按以上步骤找到每台压测机的最大线程数后,就可以开始分布式测试了。

另找一台机器作为主控机,确保每台压测机与主控机的网络互通。在jemter.properties里的remote_hosts添加压测机的ip和端口,server_port是JMeter启动的端口,压测机用jmeter-server启动。

如果主控机与压测机之间的RMI不是SSL连接,记得将server.rmi.ssl.disable=true的注释解开。server-rmi-localport是用于本机跟其它机器通信的RMI端口,如果要使压测机的压测数据回传主控机,需要将压测机及主控机jemter.properties里的mode=standard注释解开。

保存后主控机使用CLI输入命令jmeter -n -t “Webim Thread Group.jmx” -R x.x.x.x,y.y.y.y -l wbeimlog.jtl -e -o repoort(-R后跟压测机ip,多台用逗号分隔)就可以使用主控机对压测机发送指令了。

压测机接收到指令后会在CLI界面上显示如下信息:

 结合压测机回传的数据可以逐台添加压测机以探测服务端的极限性能。汇总的数据在命令行里指定的report目录里,打开index.html页面可以查看统计数据的饼状图,如下图所示:

根据统计数据可以看到发送的总次数、成功次数、错误情况等信息,对测试案例进行调整。到此使用JMeter进行websocket性能测试就算完成了。

测试过程总结

整个测试的关键点有三处:

一是调整发压机参数使并发数达到最大;

二是设置每对聊天账号都是一对一,不等待服务端响应,以便获得最真实的服务端性能;

三是根据压测机回传的数据分析出压测机所需的数量,进而测试出服务端的最大性能。

我这边整个测试工作都处于测试环境进行,取得的测试数据并不能完成代表真实生产环境下的情况,仅可以用作预测生产环境下的性能表现。今天的分享就到此结束了

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

西圣H1头戴式耳机,百元性能小钢炮,舒适音质性能绝不妥协

近日,深耕智能声学领域多年的 xisem西圣品牌‏‏发布——‏西圣H1头戴式主动降噪蓝牙耳机正式迎来首销。从各个方面来看,这款头戴式耳机展现出了极具颠覆性的创新,不仅在音质和降噪性能上表现出色,更重要的是采用了更加轻巧的佩戴…

外包干了5个月,技术退步明显...

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

顺时针打印矩阵:偏移量法与边界控制法比较---剑指offer-JZ29 顺时针打印矩阵

在编程中,处理二维数组的问题可以有多种解法。今天,我们将探讨两种解决“顺时针打印矩阵”问题的方法:偏移量法和边界控制法,并进行比较。 题目 题目连接:顺时针打印矩阵_牛客题霸_牛客网 (nowcoder.com) 偏移量法 偏…

枚举类型有着一篇足以

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青-CSDN博客 1.关键字enum的定义 enum是C语言中的一个关键字,enum叫枚举数据类型&#…

Unity 编辑器篇|(十三)自定义属性绘制器(PropertyDrawer ,PropertyAttribute) (全面总结 | 建议收藏)

目录 1. 前言2. PropertyDrawer2.1 参数总览2.2 两种用途2.3 注意事项2.4 代码样例 3. PropertyDrawer与PropertyAttribute结合使用 1. 前言 在Unity中,PropertyDrawer和PropertyAttribute是两个重要的工具,它们主要用于自定义属性的显示和行为。Proper…

ipv6-ipv4隧道和bgp全网通小实验

效果图:r1能ping通r11和r8,r8能ping通r11 个人理解:ipv6-ipv4隧道只认前缀,例如:r2隧道的source是其接口g0/0/1,它的ipv4 address是29.1.1.1/24,那么转化过来的ipv6就是2002:1d01:0101::/48,对端的r10只能ping通2002:1d01:0101::/48网段内的ipv6。 同理,r10隧道的source是其接…

代理设计模式JDK动态代理CGLIB动态代理原理

代理设计模式 代理模式(Proxy),为其它对象提供一种代理以控制对这个对象的访问。如下图 从上面的类图可以看出,通过代理模式,客户端访问接口时的实例实际上是Proxy对象,Proxy对象持有RealSubject的引用&am…

qml定位器:Row、Column、Grid、Flow

03.qml import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("2.7 定位器")Column {RedSquare {}RedSquare {}RedSquare {}spacing: 10 //间隔}Row {RedSquare {}RedSquare {}RedSquare {}spacing: 10x: 58}Flow { //中文是“流”的意思&#xff…

特征融合篇 | YOLOv8 引入长颈特征融合网络 Giraffe FPN

在本报告中,我们介绍了一种名为DAMO-YOLO的快速而准确的目标检测方法,其性能优于现有的YOLO系列。DAMO-YOLO是在YOLO的基础上通过引入一些新技术而扩展的,这些技术包括神经架构搜索(NAS)、高效的重参数化广义FPN(RepGFPN)、带有AlignedOTA标签分配的轻量级头部以及蒸馏增…

【大数据】流处理基础概念(一):Dataflow 编程基础、并行流处理

流处理基础概念(一):Dataflow 编程基础、并行流处理 1.Dataflow 编程基础1.1 Dataflow 图1.2 数据并行和任务并行1.3 数据交换策略 2.并行流处理2.1 延迟与吞吐2.1.1 延迟2.1.2 吞吐2.1.3 延迟与吞吐 2.2 数据流上的操作2.2.1 数据接入和数据…

企业网架构

企业网架构 局域网通信不同网段 局域网通信 MAC地址:硬件地址,固定在网卡上的地址(唯一标识一个网卡),确定网络设备位置的,数据链路层。一个设备可以有多个网卡,每一个网卡都需要一个唯一MAC。ARP协议:通过目的IP&…

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测 目录 回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测&…

图片如何转文字?手把手教你图片转文字

面对日益增长的数字化信息,图片转文字成为了一种必不可少的技术,通过简单的步骤,将图片中的文字转换为可编辑和可搜索的文本,提高工作效率和准确性。 这是一款通过光学字符识别(OCR)实现从图像中提取文字的…

细数2023测试测量及通信行业的十大年度热点动态

2023年,全球测试测量及通信行业在多重技术革新和市场需求的驱动下呈现出强劲的增长态势。这一年里,5G通信网络的大规模部署与商用、人工智能技术的广泛应用、物联网(IoT)设备数量的爆炸性增长以及电动汽车行业的迅猛发展等因素&am…

在CentOS 7 中配置NFS服务器

目录 1、克隆两个虚拟机 2、安装 NFS 服务 3、NFS 服务使用 1、克隆两个虚拟机 nfs-servernfs-client(修改ip地址)[rootxnode1 ~]# cd /etc/sysconfig/network-scripts/[rootxnode1 network-scripts]# vi ifcfg-eno16777736 #修改内容如下 BOOTPROT…

浅析Java虚拟机中的ZGC

引言 为什么需要垃圾回收(Garbage Collection) 垃圾回收是Java开发中的关键机制,负责自动管理内存,防止内存泄漏,提高开发效率和应用程序的稳定性。 Java中主要的垃圾回收方法 标记-清除算法(Mark and …

YZ系列工具之YZ05:代码运行中调用“计算器”

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的…

CentOS搭建DNS服务器

服务器规划 DNS服务器IP为:172.16.32.253 需要自定义域名解析 172.16.32.253 dns.zhangsan.com 172.16.32.128 test1.zhangsan.com 172.16.32.129 test2.zhangsan.com 172.16.32.130 www.zhangsan.com 1. 服务器初始化 [rootlocalhost ~]# hostnamectl set-hostnam…

python|写一个简单的web应用框架

写应用框架需要写底层服务器么? 这个要区分2种情况,如果应用框架,你没有参考WSGI标准,那么在写应用框架之前,你就必须要定义一套属于自己的服务器,当然本文不采取这种方式,专业的事情应该专业的人来做。我…

springboot集成easypoi

easypoi,主打的功能就是容易,通过简单的配置&#xff0c;就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出 pom导入依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…