JMeter Ramp-up 说明-程序员宅基地

技术标签: 压力测试  

Ramp-up Period(in seconds)

【1】决定多长时间启动所有线程。如果使用10个线程,ramp-up period是100秒,那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。Ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。  一般设置ramp-up=线程数启动,并上下调整到所需的。

【2】用于告知JMeter 要在多长时间内建立全部的线程。默认值是0。如果未指定ramp-up period ,也就是说ramp-up period 为零, JMeter 将立即建立所有线程。假设ramp-up period 设置成T 秒, 全部线程数设置成N个, JMeter 将每隔T/N秒建立一个线程。

【3】Ramp-Up Period(in-seconds)代表隔多长时间执行,0代表同时并发

 

Delay Thread creation until needed         

延迟创建线程,直到该线程开始采样,即之后的任何线程组延迟和加速时间为线程本身。这样可以支持更多的线程,但不会有太多是同时处于活动状态。

         

调度器         

选中调度器后,需要输入启动和结束时间。当测试启动时,如果必须JMeter会等待启动时间到达。在每个周期 结束,JMeter检验结束时间是否到达,如果是,运行停止,如果不是测试被允许继续,直到迭代限制到达。 

另外你可以使用启动延迟和持续时间文本域。注意启动延迟会覆盖启动时间,持续时间会覆盖结束时间。

 

 

如何设置适当的值并不轻易。

       首先,假如要使用大量线程的话,ramp-up period 一般不要设置成零。

       因为假如设置成零,Jmeter将会在测试的开始就建立全部线程并立即发送访问请求, 这样一来就很轻易使服务器饱和,更重要的是会隐性地增加了负载,这就意味着服务器将可能过载,不是因为*均访问率高而是因为所有线程的第一次并发访问而引起的不正常的初始访问峰值,可以通过Jmeter的聚合报告监听器看到这种现象。
这种异常不是我们需要的,因此,确定一个合理的ramp-up period 的规则就是让初始点击率接**均点击率。当然,也许需要运行一些测试来确定合理访问量。

  基于同样的原因,过大的ramp-up period 也是不恰当的,因为将会降低访问峰值的负载,换句话说,在一些线程还未启动时,初期启动的部分线程可能已经结束了。

  那么,如何检验ramp-up period I太小了或者太大了呢?首先,初始的ramp-up period=*均点击率并用总线程/点击率。 例如,假设线程数为100, 估计的点击率为每秒10次, 那么估计的理想ramp-up period 就是 100/10 = 10 秒。 那么,应怎样来提出一个合理的*均点击率呢?没有什么好办法,必须通过运行一次测试脚本来获得。

  其次, 在测试计划(test plan)中增加一个聚合报告监听器,如图2所示,其中包含了所有独立的访问请求(一个samplers)的*均点击率。 第一次取样的点击率(如http请求)与ramp-up period 和线程数量密切相关。通过调整ramp-up period 可以使首次取样的点击率接**均取样的点击率。

     第三, 查验一下Jmeter日志(文件位置:JMeter_Home_Directory/bin) 的最后一个线程开始时第一个线程是否真正结束了,二者的时间差是否正常。

  总之,是否能确定一个适当的ramp-up time 取决于以下两条规则:
  ·第一个取样器的点击率(hit rate)是否接*其他取样器的*均值,从而能否避免ramp-up period 过小。
  ·在最后一个线程启动时,第一个线程是否在真正结束了,最好二者的时间要尽可能的长,以避免ramp-up period过大。

  有时,这两条规则的结论会互相冲突。 这就意味着无法找到同时满足两条规则的合适的ramp-up period。 糟糕的测试计划通常会导致这些问题,这是因为在这样的测试计划里,取样器将不能充分地采集数据,可能因为测试计划执行时间太短并且线程会很快的运行结束

 

 

假设:

线程数:n

Ramp-Up Period:T (有人称之为启动时间,有人说是准备时长,看个人喜好)

循环次数:a  

若每个循环运行时间是 t

当时间到 S = (T- T/n)时,最后一个线程启动,若要使所有线程同时运作,则需要在最后一个线程启动的时候第一个线程仍未关闭,为达到这个要求,需满足 a·t > S及a > S/t

每一个个线程运行时间既是R = a·t(此处的a是大于S/t的某一值),则第一个线程在时间点为R 的时候停止,整个测试理论运行时间则是 :S + R = (1-1/n)·T + a·t

总结:

测试中变量是 线程数 n ,每个循环时间 t 是个实践值,循环次数 a 只是为了延长单个线程的运行时间,从而保证当最后一个线程启动时,所有线程都在运行中,达到压测效果。

以上是我个人的总结,额,什么?看不懂!其实笔者写完了也晕了,下面我们用确切的数值进行试验

我们设置线程数 n = 5,循环次数a = 1000,请求www.google.com,得到聚合报告如图:

 

图中得到谷歌首页的*均请求时间大约为t = 0.2秒

这里,我们为了方便分析,将Ramp-Up Period 设置为T = 10秒(实际合理的时间后面会说明)

依然是n = 5,得到 S = (T- T/n) = 8 ,也就是说,从第一个线程启动到第8秒的时候,最后一个线程开始启动,若需要在最后一个线程启动的时候第一个线程仍未关闭,则需要满足 a·t > S ,已知S = 8,t = 0.2,得到 a > 40 。

OK,既然循环次数要大于40,我们不妨把循环设置成100,那么单个线程运行时间就是R = a·t = 20秒,也就是说第一个线程会在第20秒的时候停止,整个测试的理论运行时间为 S + R = (1-1/n)·T + a·t = 28秒

我们用一张图来直观的看看每个线程的运行情况

 

 

从图中可以得到从第8秒开始,到第20秒,5个线程同时在运行中,此时才是真正的模拟5个用户同时并发

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z90818/article/details/116784509

智能推荐

心动女友框架分析-程序员宅基地

文章浏览阅读222次。文档结构一 游戏入口二 游戏统计三 视频播放、音频播放四 支付五 http通讯六 游戏配置文件七 关键字屏蔽八 新手指引文档结构cocos2d-js-min.js cocos引擎egreth5sdk.js 白鹭SDKexif.js ???gameApi.js ..._心动女友 系统繁忙,错误代码1007

git常用命令-程序员宅基地

文章浏览阅读57次。git配置信息查看.gitignore 过滤规则1.17 git log命令后如果用ctrl+c退出就会卡死,如果用q退出就没问题git checkout .撤销本次工作空间修改git branch 查看本地分支git branch -r 查看远程分支git branch -a 查看所有分支git branch -vv 查看本地分支与远程分支关系git 查看分支起源#删除本地分支..._git log 后按了ctrl d

lotus-docs_new major version of npm available! 8.11.0 -> 10.3-程序员宅基地

文章浏览阅读224次。lotus-docs_new major version of npm available! 8.11.0 -> 10.3.0

Winform自定义MessageBox_winform messagbox-程序员宅基地

文章浏览阅读9.6k次,点赞7次,收藏13次。在使用Winform的MessageBox作为消息提示时,会有一些不方便的地方。如,MessageBox消息框弹出之后,如果不关闭就会阻塞函数的继续执行;不能自动关闭等。因此,子丰就自己仿照MessageBox的样式写了一个InformationBox提示框,可以实现自动关闭、永远显示在所有窗口的最上方等。首先,贴出几张图片展示一下InformationBox的效果;然后,具体介绍Informat_winform messagbox

使用radon变换进行直线检测_radon变换 直线检测-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏41次。 最近做毕设,基础是利用radon变换进行直线检测。radon变换其实是对hough变换算法的优化,具体原理可自行查阅相关资料,在此不再赘述。本文要介绍的是利用matlab自带的radon变换函数进行直线检测,难点在于得到radon变换的结果后如何提取峰值并显示在原图上,下面将进行详细介绍。 matlab中自带的radon函数使用方法如下:[R,x]=radon(F,theta);..._radon变换 直线检测

Pytroch转Onnx实现(Unet的模型转Onnx)_pytorch unet onnx-程序员宅基地

文章浏览阅读1.5k次。主要是使用torch.onnx.export()这个方法来实现。Unet的实现参考:链接: https://blog.csdn.net/weixin_44791964/article/details/108866828.这位博主写的很详细,b站还有实现视频,手把手教学!!!Onnx转换实现代码import onnximport torch.onnxfrom unet import Unetunet=Unet()print(unet)model = torch.load('D:/Pycha_pytorch unet onnx

随便推点

Window环境下Python不能卸载问题解决_pyt python 3,4,3 xthere is a problem with this win-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏4次。问题描述:windows10系统 python版本3.4.3用360软件管家或者是从电脑的控制面板里的程序都无法卸载都会提示以下内容:there is a problem with this windows installer package.A programe run as part of the setup did not finish as expected.Contact_pyt python 3,4,3 xthere is a problem with this windows installerpackage.

Idea2017部署项目到tomcat时增加Artifacts的步骤_idea ssh项目 artifacts部署到tomcat-程序员宅基地

文章浏览阅读4.4k次。1、在Idea2017中maven构建的项目部署到tomcat容器中时,选择Edit Configration部署时,需要配置Deployment属性,选择war或者war exploded的发布方式时。要进行这个配置首先要点击添加Artifact,如下图所示:点击下面的“+”号时,发现没有Artifact按钮选项(上图是有配置过的,所以是有的)。2、解决法办:settings–>..._idea ssh项目 artifacts部署到tomcat

情感分析的入门简介,从词法、句法分析开始,到基础模型及深度学习模型的介绍_情感分析入门-程序员宅基地

文章浏览阅读851次。情感分析(Sentiment Analysis)是自然语言处理中一个非常重要且广泛研究的领域,它可以帮助企业或组织更好地了解客户对产品或服务的态度,从而制定符合用户需求的营销策略或产品改进方向。随着互联网和社交媒体等信息化时代的到来,传播开放、消费高速增长,各行各业都在追求个性化服务与个性化体验。如何准确识别并理解客户的心情、倾向、情绪和喜好,无疑是众多消费者关切的重点。目前,情感分析技术已经成为一种热门话题,有关部门也积极推出了针对不同场景的情感分析工具或产品。_情感分析入门

《UG NX8.0中文版完全自学手册》一1.5 文件操作-程序员宅基地

文章浏览阅读518次。本节书摘来自异步社区《UG NX8.0中文版完全自学手册》一书中的第1章,第1.5节,作者 刘昌丽 , 周进,更多章节内容可以访问云栖社区“异步社区”公众号查看1.5 文件操作UG NX8.0中文版完全自学手册本节将介绍文件的操作,包括新建文件、打开和关闭文件、保存文件、导入导出文件操作设置等。1.5.1 新建文件菜单栏:选择菜单栏中的“文件”..._ug nx 8.0中文版完全自学手册

基于MFC的学生成绩管理系统_mfc fdlg.domodal()-程序员宅基地

文章浏览阅读483次。简单的MFC的课程设计,部分功能还没有优化,仅供参考_mfc fdlg.domodal()

C11新特性(部分)_c11特性-程序员宅基地

文章浏览阅读1.2k次,点赞6次,收藏15次。1.类型推导2.nullptr指针空值3.基于范围的for循环4.typedef与using5.新增容器_c11特性

推荐文章

热门文章

相关标签