首页 > 其他分享 >jmeter详解-线程组详解(1)-Thread Group

jmeter详解-线程组详解(1)-Thread Group

时间:2023-08-16 23:34:52浏览次数:38  
标签:Group 启动 次数 详解 线程 测试 时间 jmeter 循环

Jmeter plugin插件的分类

  • Standard Set组件:对线程组进行了扩展,扩充了许多丰富图表的监听器,可以用Jmeter来监控服务器
  • Extras Set组件:支持远程监控,图表展示更加丰富
  • Extras with Libs Set组件:提供对JSON的支持,新增了JMS取样器
  • WebDriver Set组件:WebDriver进行了集成,进行自动化测试
  • Hadoop Set组件:提供Hadoop测试组件

这里安装Standard Set来研究线程组,线程组对应着用户的数量,当然用户的数量有诸多可能,这个系列一并分析并总结。

安装后线程组的功能就更加丰富了

这里先从最常用的开始

 Thread Group

在线程组 GUI 中,您可以控制模拟的用户数(线程数)、加速时间(启动所有线程所需的时间)、执行测试的次数,以及可选的启动并停止测试时间。

线程属性值

设置的线程属性值是预期压力值,而聚合报告是压力测试的实际结果

线程数

1线程数 = 1用户数,windows单台机器线程数一般1000左右

Ramp-Up时间 (秒)

  • 预期线程组的所有线程从启动-运行-释放的总时间
  • ramp up=0时,表示瞬时加压,启动线程的时间无限趋近于0
  • 特别注意:在负载测试的时候,尽量把ramp up设置大一些,让性能曲线平缓,容易找到瓶颈点

注意事项:

1)Ramp-Up要设置稍长的时间避免瞬时加压:

大量线程时,若设置为0,相当于瞬时加压,即测试开始时启动全部线程并立即发生请求,会给服务器造成不合理的压力。

2)Ramp-Up要设置够短的时间来保证并发数:

Ramp-up必须设置合理的时间,保证最后一个线程在第一个线程完成之前开始运行,这样才能保证实际并发量。

若设置时间过长,则会导致实际并发量并会小于预期并发量:一些线程还没有启动,初期启动的部分线程已经结束了

循环次数

  • 线程组的循环次数
  • 若设置为永远,也就是在循环期间,jmeter将不停的发送请求,可以用来测试最大并发数

调度器

控制当前线程组执行的持续时间和启动延迟时间

持续时间:循环次数设置为永远或 -1 时,持续时间才会生效。循环次数有固定值且  -1,持续时间不会生效,以循环次数为准

一般而言,测试计划总时间(见右上角)> 持续时间 + 启动延迟,因为线程是逐步释放的,而不是瞬间释放。

 

例子:

若现在有一个查询功能,需要系统在5分钟内完成5000笔查询业务,同时90%的用户响应时间不超过3S,最大并发是多少?

需求分析:

实际上也就是要求5分钟完成5000次查询,最大并发数计算公式如下:

最大并发数=(单次响应时间 * 业务量)/总的业务时间

QPS: Queries Per Second,每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数)。

并发线程数 = QPS / ( 1000 / 平均耗时ms )

假设单线程下,单次请求的平均响应时间是 200ms。

最大并发数=(0.2s  * 5000)/ 5*60 = 3.33,若设置Ramp-Up=1,线程组=4,持续时间=300,那么产生的查询量= 1 * 5 * 4 * 300 = 6000 ,这样设置是可以达到5分钟5000次查询的要求的。

 

网上水贴,广告贴太多了,翻了半天终于捞出来像样的帖子:https://blog.csdn.net/vicky_lov/article/details/84588234

先从一个简单的例子开始:

线程数:n = 2

Ramp-Up Period:T = 1

循环次数:永远

每一个线程的平均响应时间是 t = 800ms

持续时间:4s

那么2s内线程可以运行4/0.8 = 5次,1/2=0.5s=500ms,即第二个线程启动的时候,第一个线程还没结束0.8s>0.5s。这样就能形成两个有效并发数。我们把过程捋一下。

大致草图就是这样,先线程1启动,然后0.8s之后继续循环,在4s内共执行4次;0.5s后线程2启动,然后每隔0.8s循环启动,在4s内执行4次,我的理解就是这样,具体是怎么在Ramp-Up时间内启动这些线程的就不清楚了。

再来看一个例子,设置一定的循环次数,循环次数可以延长单个线程的运行时间。

假设:

线程数: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,T=10,根据公式 S = (T- T/n) = 8 ,也就是说,从第一个线程启动 到 第8秒的时候,最后一个线程开始启动,若需要在最后一个线程启动的时候第一个线程仍未关闭,则需要满足 a·t > S ,已知S = 8,t = 0.2,得到 a > 40 。

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

用一张图来看下每个线程的运行情况:

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

 

再来回顾一下性能测试的场景:https://zhuanlan.zhihu.com/p/35460011

  • 单业务基准测试
  • 单业务压力测试
  • 单业务负载测试
  • 综合业务基准测试
  • 综合业务压力测试
  • 综合业务负载测试
  • 综合业务稳定性测试

可以看出来,Thread Group用来做单业务基准和压力测试都是可以的。

 

标签:Group,启动,次数,详解,线程,测试,时间,jmeter,循环
From: https://www.cnblogs.com/jiushao-ing/p/17629879.html

相关文章

  • 【Java 高阶】Maven setting.xml 详解
    ......
  • 【Java 高阶】Maven setting.xml 详解
    ......
  • 全面了解JMeter响应断言的使用方法
    JMeter 是一个功能强大的性能测试工具,它可以模拟大量用户并发访问网站或应用程序,以测试其性能和稳定性。在进行性能测试时,我们需要对响应结果进行断言,以确保应用程序或网站的功能和性能符合预期。在JMeter中,响应断言是一种用于检查服务器响应是否符合预期的机制。JMeter提供了......
  • 数仓备份经验分享丨详解roach备份原理及问题处理套路
    本文分享自华为云社区《GaussDB(DWS)备份问题定位思路》,作者:yd_216390446。前言在数据库系统中,故障分为事务内部故障、系统故障、介质(磁盘)故障。对于事务内部故障和系统故障,使用日志自动恢复,不需要人工参与。但对于介质故障,需事先备份数据。那么对于DWS来说是如何进行备份的呢?......
  • 数仓备份经验分享丨详解roach备份原理及问题处理套路
    本文分享自华为云社区《GaussDB(DWS)备份问题定位思路》,作者:yd_216390446。前言在数据库系统中,故障分为事务内部故障、系统故障、介质(磁盘)故障。对于事务内部故障和系统故障,使用日志自动恢复,不需要人工参与。但对于介质故障,需事先备份数据。那么对于DWS来说是如何进行备份的呢?以及备......
  • jmeter Include Controller&Module Controller
    ***IncludeControllerinclude控制器:可理解为外部调用。用来导入外部的测试片段(非完整的测试计划),在执行时会执行导入的测试计划。被导入的测试计划有特殊要求,它不能有线程组,只能包含简单控制器及控制器件下的元件。相当于一个执行单元,一个封装了业务操作单元。调用文件测试片......
  • Windows 操作系统命令行 netsh winsock reset 的作用详解
    这个命令是一个用于Windows操作系统中的网络故障排除工具,它用于重置Winsock相关的配置,以解决与网络连接和通信相关的问题。命令解释:netsh:这是Windows中的一个命令行工具,用于管理网络、接口和配置。winsock:这是WindowsSockets的缩写,是一种应用程序编程接口(API),用于......
  • Jmeter 的 BeanShell
    通过BeanShell可以访问ctx、vars、props、prev、sampler、log;1.通过ctx可以访问jmeter运行时状态,比如线程数及线程状态;ctx:获取当前线程上下文数据(可获取所有信息);可以通过获取jmeterContent实例来获取运行时信息;ctx.getVariables(“变量名”):获取变量值(同vars.get())。ct......
  • Windows 操作系统命令行 netsh int ip reset 的作用详解
    netshintipreset命令是用于重置Windows操作系统中的网络设置和配置的命令。它是netsh命令行工具的一部分,用于管理网络设置。这个命令在网络故障排除、修复网络连接问题以及清除可能存在的网络配置冲突时非常有用。让我们来详细解释这个命令及其使用场景。命令详解:netsh......
  • Jmeter 安装自定义插件
    1.下载PluginsManager下载地址:https://jmeter-plugins.org/install/Install/2.将下载的jar包复制到JMeter中的lib\ext目录下3.打开jmeter->选项->PluginsManager->availableplugins->搜索CustomThreadGroups插件->勾选->点击ApplyChangesandRestartJmeterInstalledPl......