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个用户同时并发

JMeter之Ramp-up Period(in seconds)说明相关推荐

  1. Jmeter脚本 GUI和非GUI启动方式

    2019独角兽企业重金招聘Python工程师标准>>> 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动 ...

  2. JMeter压力测试总结

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强.JMeter能够自动扫描其lib/e ...

  3. 文件上传功能测试、性能测试解决方案(含Jmeter配置及加压参数分析)

    一.背景和测试用例 上传是每个系统非常常见的功能,但是多半时候开发.测试容易忽略很多细节,测试虽不可穷尽,但前人踩过的坑.我们踩过的坑,坚决不能再出第二次.看到一篇博客考虑的很全面,拿来主义了,感谢博 ...

  4. JMeter基础之一个简单的性能测试

    我们了解了jmeter的一此主要元件,创建一个简单的测试计划来使用这些元件.该计划对应的测试需求: 1)测试目标网站是www.51cto.com 2)测试目的是该网站在负载达到20 QPS 时的响应时 ...

  5. 使用jmeter测试java程序

    最近在用jmeter进行性能测试,防止被忘记,把步骤写下. 场景:测试java程序 1.右击测试计划-> 添加 -> Threads(Users) -> 线程组 2.设置线程属性,用 ...

  6. jmeter性能测试入门简介

    Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工 ...

  7. jmeter json断言_Jmeter接口测试+压力测试

     jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先要 ...

  8. jmeter的基本功能使用详解

    jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简 单.因为jmeter是java开发的,所以运行的时候必须先要 ...

  9. Jmeter 创建一个web测试计划

    Jmeter 创建一个web测试计划 by:授客 QQ:1033553122 1.   下载Jmeter 下载地址:http://jmeter.apache.org/download_jmeter.c ...

  10. JMeter 测试计划

    测试计划 使用 JMeter 进行测试的起点,是其它 JMeter 测试元件的容器. 线程组 代表一定数量的并发用户,它可以用来模拟并发用户发送请求.实际的请求内容在 Sampler中定义,它被线程组 ...

最新文章

  1. 【必读】文案都写不好,还谈什么互联网思维
  2. linux下磁盘是硬盘吗,肿么确定linux系统上的硬盘哪个是主盘
  3. php调用hive,如何进行hive的简单操作
  4. 领域模型驱动设计(Domain Driven Design)入门概述
  5. 「递归」第8集 | 当敲代码的手开始写歌,玩跨界的程序员有多野?
  6. mime类型是什么 node_Node.js - 文件系统获取文件类型
  7. java的构造特点_JAVA学习第八课(构造函数及其特点)
  8. 漫画:五分钟看懂车联网
  9. leetcode 1222 python
  10. chmod简介及其使用方法
  11. 完全弄懂如何用pycharm安装pyqt5及其相关配置
  12. linux获取字符格式化,Linux 格式化字符串漏洞利用
  13. java实验指导答案华软_Java核心编程技术实验指导教程
  14. 谢希仁编著《计算机网络》1-6章汇总
  15. 网络机顶盒固件增删预装APP步骤
  16. 免费金融数据API(基金,股票),基金股票网格交易模拟服务
  17. Window10 和 Ubuntu20.04 双系统安装
  18. 【SpringCloud】Could not find artifact org.springframework.cloud:spring-cloud-starter-xxx
  19. 机器人旋转关节非线性摩擦辨识
  20. 通讯方式:近场通讯和无线通讯

热门文章

  1. [云原生专题-28]:K8S - Kubernetes(K8S)Master集群构建与安装过程详细解读 - Dashboard的安装与访问
  2. miniblink每日最新下载地址
  3. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-Arrays(数组)
  4. 第四篇--关于device
  5. opc ua与opc da区别_OPC,OPCDA,OPCUA
  6. 5G时代下的人工智能发展
  7. 如何简单理解ngnix的反向代理
  8. Java反射机制在工厂模式中的应用
  9. AngularJS笔记
  10. CCF-CSP真题《202209-4—吉祥物投票》思路+python题解