Jmeter@测试场景

news2025/1/20 12:12:59

目录

性能测试Jmeter,常用的场景

场景一:Thread Group

场景二、jp@gc - Stepping Thread Group

场景三、jp@gc - Ultimate Thread Group


场景一:Thread Group

参数配置-线程属性Thread Properties:
1.线程数(Number of Threads):运行的线程数设置,一个线程对应一个虚拟用户,即并发数,多个线程模仿对服务器的并发访问

2.Ramp-up Period(in Seconds):所有线程数在多少秒内全部启动
不建议太短:会给服务器太大的压力
不建议太长:可能第一个线程执行完毕后,再执行第二个线程,达不到并发效果

3.循环次数(Loop Count):每个线程的重复运行次数
勾上永远,表示如果不停止将会一直执行下去

4. Delay Thread creation until needed :
默认情况下,测试开始的时候,所有线程就被创建完了。
如果勾选了此选项,那么线程只会在合适的需要用到的时候创建

参数配置-调度器配置Thread Properties【Scheduler-Configuration】:

1、持续时间(秒)-Duration(秒):测试持续的时间,如果启动时间+持续时间>结束时间,那么此设置覆盖结束时间

2、启动延迟(秒)-Startup delay(秒):点击执行按钮后,仅初始化场景,不运行线程,等待延迟到时后开始运行线程,如果开始点击执行按钮的时间+延迟时间>启动时间,则此设置覆盖启动时间

截图例子配置:

Number of Threads设置100个线程

Ramp-Up Period设置10--->每秒就会启动100/10=10个线程

Loop Count设置1 --->执行1次

Delay Thread creation until needed 勾选上--->每秒启动10个线程,并开始运行

Scheduler-Duration设置60--->持续执行60秒

Scheduler-Startup delay设置3--->延后启动3秒

场景二、jp@gc - Stepping Thread Group

Stepping Thread Group的特性
1.有预览图显示估计的负载
2.可延迟启动线程组
3.可持续增加线程负载
4.可设置最大负载的持续运行时间
Stepping Thread Group的作用
1.减少服务器的瞬时压力,做性能测试应该逐步增加压力,而不是瞬时加压
2.逐步增压越平缓越好,更容易从结果看到多少压力值下,有性能瓶颈

this group will start:表示总共要启动的线程数;若设置为 100,表示总共会加载到 100 个线程
first,wait for:从运行之后多长时间开始启动线程;若设置为 1 秒,表示运行1秒后立即启动线程
then start:初次启动多少个线程;若设置为 1 个,表示初次启动1个线程
next add:之后每次启动多少个线程;若设置为 5个,表示每个梯次启动 5 个线程
threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的持续时间;若设置为 25秒,每梯次启动完线程之后再运行 25秒
using ramp-up:启动线程的时间;若设置为 5 秒,表示每次启动线程都持续 5 秒
then hold load for:线程全部启动完之后持续运行多长时间,如图:设置为 300秒,表示 100 个线程全部启动完之后再持续运行 300秒
finally,stop/threads every:多长时间释放多少个线程;若设置为 5 个和 1 秒,表示持续负载结束之后每 1 秒钟释放 5 个线程

场景设置,与跑完的报告时间相吻合

 注:jp@gc - Throughput Shaping Timer

Throughput Shaping Timer 是用来控制吞吐量的定时器,通过延缓线程运行来整体控制取样器产生的RPS。
实际使用中:
1. 可以通过设置在不同吞吐量分别持续一段时间,考察系统在不同吞吐量情况下的稳定性
2. 可以通过设置随着时间持续增加的吞吐量,来探测系统吞吐量的的极限

jp@gc - Stepping Thread Group配置,如下:【设置100个线程数,一次启动10个,持续300秒】

整个场景运行时间为6分24秒

增加jp@gc - Throughput Shaping Timer定时器【设置RPS起始值】

RPS即每秒请求数(Request Per Second)

 最终场景运行1分13秒【探测系统吞吐量的的极限,很明显测试服务一点压力都没有,所以没有到服务器的极限】

 ​​​​​​

 同样的场景配置,设置两段定时器的RPS起始值

  最终场景运行1分13秒【设置在不同吞吐量分别持续一段时间,考察系统在不同吞吐量情况下的稳定性;执行过程中吞吐量持续上行,没有持续 或持平吞吐量,表现服务器比较稳定】

 比如一个请求响应时间为2秒,END RPS 为30,那么线程数:2*30=60  即:响应时间*RPS=所需线程数)。即大约要60个线程, 考虑到运行时诸多影响因素(线程数增加后响应时间增加了), 我们还需要预备更多的线程,也许我们加到70个线程才能满足要求,这只是一个估算值。

另外,线程组设置的循环是永远,但是因为有定时器的存在,脚本并不会停不下来,而是在定时器的时间结束后,脚本就会停止运行。

场景三、jp@gc - Ultimate Thread Group

【线性负载】

场景就比如说,春运抢票,这个时候系统30秒内涌入了10个用户并发,他们访问系统持续时间30秒,5秒钟都退出了系统

Start Threads Count,当前行的线程总数;设置10个线程数

Initial Delay,Sec,延时启动当前行的线程;设置0秒后初始化

Startup Time,Sec,启动当前行所有线程达峰值所需时间;设置30秒后达到峰值

Hold Load For,Sec,当前行线程达到峰值后的稳定加载时间;设置达到峰值后持续30秒

Shutdown Time,停止当前行所有线程所需时间;设置5秒内结束所有线程

 监听器的图就可以得知,35秒的时候,线程总数15个,持续运行1分钟,又花了10秒停止线程,因此总共耗时了1分43秒。

持续时间,系统达到这些负载后,能不能稳定运行,性能会不会下降;

但负载量还不确定的情况下,服务器能处理的负载量是多少,哪些负载不能处理? 

这里就有了按步骤增加负载,慢慢往上加压;

【步进负载】

想看系统的负载量是多少,最大负载多少,是否可以平稳运行?

每60秒增加15个线程数,持续45秒

 观察日志和监听器,就可以知道系统在哪个负载下面平稳运行,能承担多大的负载;

【波浪形测试负载】

春运,每次开放抢票时,有大量用户涌入,等到下次开放时,又有大量用户涌入,就像波浪一样,不断敲击服务器,考验服务器的性能;

配置说明:
第一个阶段,花10秒的时间,启动15个线程,持续运行5秒,用5秒的时间停止掉
第二个阶段,第一阶段的线程都停止后,再开始启动第二个阶段的线程,花10秒的时间再启动15个线程,再持续运行5秒,用5秒的时间停止掉
第三个阶段、第四个阶段、第五个阶段,与第二阶段一样

这样像波浪一样拍打服务器,观察服务器的性能,看系统是否能平稳运行。

 

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

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

相关文章

并查集的使用

目录 一.介绍 二.并查集的实现 三路径压缩 四.相关题型 4.1省份数量 一.介绍 什么是并查集? 将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个 单元素集合,然后按一定的规律将归于同一组元素的集合合并。在这个过程中要…

十五、Express 中使用JWT进行登录验证

cookie 篇 : Node.js 中 cookie的验证登录 | session 篇 : Node.js 中 session验证登录 在前面讲过了两种验证登录的方式,其一是cookie,其二是session;那么在讲JWT之前先来简单的回顾这两种方式区别;cookie和sessi…

成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】

文章目录1、出现的问题2、查看自己的npm和node版本3、解决方法3.1 寻找对应的版本3.2 升级npm版本4、再次运行项目,成功5、如果上述方法失败,请看这里早起更新代码后,跑前端项目。结果噶了、跑不起来了;不慌,看看日志报…

JiBX 的实操

JiBX 的实操介绍基本概念BECL 介绍JiBX 基础概念开发jar 依赖BECLJiBXPOJO 实体类OrderAddressCustomerShippingOrderFactory 工厂类使用ant 来生成XML和POJO对象的绑定关系idea 使用antant 脚本 build.xmlant 添加 build.xmlbinding.xml报错问题解决测试TestOrder测试结果 如图…

C/C++ STL

常见容器性质总结 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间 不能&…

java mybatis的SpringBoot博客论坛管理系统

java mybatis的SpringBoot博客论坛管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

Java数据结构:堆与PriorityQueue优先级队列的使用

文章目录1 什么是堆2 堆的实现思路2.1 大根堆的成员变量简介2.2 树的相关知识复习2.3 向下调整创建大根堆2.4 堆的插入2.5 堆的删除3 大根堆实现代码及测试4 PriorityQueue的使用4.1 特性简介4.2 常用方法4.3 使用PriorityQueue实现大根堆写在最后1 什么是堆 堆实质上就是对完全…

python对称加密AES的使用

python对称加密AES的使用 aes安装 pip install pycryptodome加密库引用 from Crypto.Util.Padding import pad, unpad from Crypto.Cipher import AES import base64完整代码 from Crypto.Util.Padding import pad, unpad from Crypto.Cipher import AES import base64def A…

带你玩转OpenHarmony AI-基于海思NNIE的AI能力自定义

简介相信大家从玩转OpenAtom OpenHarmony(简称“OpenHarmony”)AI系列专题的其他文章中,已经拓展了OpenHarmony AI在智慧出行、智慧办公等多场景下的AI自动检测、识别和判断的新体验,对于OpenHarmony平台上的AI开发有了一定认识。…

通过事件总线EventBus/AsyncEventBus进行JAVA模块解耦 (史上最全)

事件总线在 进行JAVA模块解耦 ,价值巨大 实际开发中,常常 通过事件总线EventBus/AsyncEventBus进行JAVA模块解耦 , 比如,在顶级开源组件 hotkey的源码中, 就多次用到 EventBus/AsyncEventBus进行JAVA模块解耦 所以&am…

71、AdaNeRF: Adaptive Sampling for Real-time Rendering of Neural Radiance Fields

简介 官网:https://thomasneff.github.io/adanerf/ 新的双网络架构,它采用正交方向,通过学习如何最好地减少所需样本点的数量,将网络分为联合训练的 sample 和 shading 网络,训练方案在每条射线上采用固定的样本位置…

Nginx 高级篇

文章目录Nginx 高级篇一、 负载均衡1、 负载均衡概述2、 处理方式2.1 用户手动选择2.2 DNS 轮询2.3 四 / 七层负载均衡3、 七层负载均衡3.1 七层负载均衡指令3.1.1 upstream3.1.2 server3.2 实现流程3.3 负载均衡的状态3.3.1 down3.3.2 backup3.3.3 max_conns3.3.4 max_fails &…

Docker前世今生

文章目录Docker背景Docker历史docker 理念Docker能做什么虚拟机的缺点容器虚拟化技术Docker学习途径Docker背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发运维之间的协作我们需要 关心很多东西,这也是…

ChatGPTAPI Key申请教程

ChatGPTAPI Key申请教程 一、API Key申请使用 在浏览器打开网址:https://openai.com/api/ 等待网页加载完成后,点击右上角 LOG IN 进入登录界面 进入登录界面后,依次输入注册的邮箱–Continue–输入密码–Continue,完成登录&…

< CSS小技巧:filter滤镜妙用>

文章目录👉 前言👉 简述👉 基本语法及案例》语法简述》案例👉 拓展1. drop-shadow 更加智能的阴影效果2. 网页置灰3. 元素强调、高亮4.节省空间,提高网页加载速度👉 具体案例网页参考文献往期内容 &#x1…

如何有效进行团队建设:从关注事到关注人

咱打工人都想趁着年终总结这个契机,拿着工作数据跟领导们提涨薪!但是入行没多久的社畜们却没有这个底气,虽累但没结果(暗指身兼数职的项目经理小白们),主要是觉得自己的工作成绩不够优秀。这几天办公室的项…

Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

摘要 我们为元学习提出了一个算法是模型无关model−agnosticmodel-agnosticmodel−agnostic. 在某种意义上,其与用梯度下降训练的模型是兼容的,可以应用在大量不同的学习问题上。包括:分类、回归、和加强学习。 元学习的目标是正在学习任务…

TAZ生成实践(Intel芯片Mac Python 3.7.9)

参考文章 https://blog.csdn.net/weixin_42632778/article/details/115164518 TAZ生成 https://zhuanlan.zhihu.com/p/343576683 使用ArcGIS实现线转栅格 https://pro.arcgis.com/zh-cn/pro-app/latest/tool-reference/conversion/polyline-to-raster.htm ArcGIS Pro 折线转栅格…

第②篇 Spring IoC——容器

Spring最成功的是其提出的理念,而不是技术本身。 概念 Spring所依赖的两个核心理念: 一个是控制反转(IoC)。另一个是面向切面编程(Aspect Oriented Programming,AOP)。 IoC是Spring的核心&am…

JS入门到精通详解(1)

JavaScript概述(需要记)什么是javascript?是一门(基于对象)和(事件驱动)的(脚本语言)。js诞生于哪一年?哪个公司?谁?第一个名字叫什么?1995年 网景 布兰登 l…