JMeter循环计数

JMeter循环计数,jmeter,Jmeter,我想用多个并发线程运行JMeter测试,每个线程每10秒发送一个请求 这些是我的线程属性 线程数:10 上升期:10 循环计数:1 结果:10个请求分为10秒,因此每秒都有一个请求,这正是我想要的 现在我想运行这个测试3次(30秒)。所以我将循环计数设置为3 但结果是:10秒内有30个请求。这很奇怪,因为我希望运行30秒,每秒得到1个请求 如何使用JMeter实现这一点 我的最终目标是长时间运行此测试,并增加线程数 如何使用JMeter实现这一点?似乎在测试中控制吞吐量的最简单方法是使用标准的“

我想用多个并发线程运行JMeter测试,每个线程每10秒发送一个请求

这些是我的线程属性

线程数:10

上升期:10

循环计数:1

结果:10个请求分为10秒,因此每秒都有一个请求,这正是我想要的

现在我想运行这个测试3次(30秒)。所以我将循环计数设置为3

但结果是:10秒内有30个请求。这很奇怪,因为我希望运行30秒,每秒得到1个请求

如何使用JMeter实现这一点

我的最终目标是长时间运行此测试,并增加线程数


如何使用JMeter实现这一点?

似乎在测试中控制吞吐量的最简单方法是使用标准的“开箱即用”或自定义的


在这两种情况下,测试结构如下所示:

Thread Group Number of Threads = N Ramp-up Period = N Loop Count = 1 Constant Throughput Timer Target Throughput = 60 Calculate Throughput based on = "all active threads in current thread group" . . . Loop Controller Loop Count = M . . . HTTP Request . . . 螺纹组 线程数=N 上升周期=N 循环计数=1 恒定吞吐量定时器 目标吞吐量=60 根据=“当前线程组中的所有活动线程”计算吞吐量 . . . 回路控制器 循环计数=M . . . HTTP请求 . . . 在这里,循环控制器定义了迭代次数


看起来这两个计时器都不是绝对精确的,而且配置也有点不同:



这里还有一种如何改变吞吐量的方法。

我今天对此进行了研究,得出了这样的结论:循环计数设置是一个完全的误称。它实际上不会按时间顺序循环,即使您的测试计划已连续检查了运行线程组。它所做的是将线程组相乘,并同时运行所有乘法。因此,上升周期只考虑一次,而不是每个“循环”一次-没有时间循环


可以在这里找到一个用图表的解释:

我对渐变的理解是,值为0将同时触发所有线程

通过设置以下各项,您可能能够实现您想要的目标:

Thread Group Number of Threads = N Ramp-up Period = N Loop Count = 1 Constant Throughput Timer Target Throughput = 60 Calculate Throughput based on = "all active threads in current thread group" . . . Loop Controller Loop Count = M . . . HTTP Request . . .
  • 线程数:10
  • 上升期:0
  • 循环计数:N

然后使用控制器确定何时结束每个循环。

根据我使用Jmeter的经验,如果设置

线程数:10

上升期:10

循环计数:1

在10秒内创建10个线程,因此每秒创建1个线程。 循环计数为1时,重复此操作一次。 但是如果您增加循环计数,我认为您不会创建新线程,而是在线程组中重复jmeter elements过程,因此请求之间的时间不是30秒,而是刚刚超过10秒。 如果要在30秒内创建30个线程,则必须设置

线程数:30

上升期:30

循环计数:1


如果你想在3秒的斜坡上重复10次线程,你应该插入一个线程延迟为10000毫秒的TimeRT-常数定时器,这样你在30秒内得到30个请求(实际上你应该考虑执行任务的时间)

YUP,<强>循环计数< /Stutt>参数是不直观的。根据我的计算,它实际上是线程/用户执行特定测试的次数

因此,如果我正确理解了你想要的意图:

  • 运行N个并发线程/用户
  • 他们每10秒发送一次请求
  • 您希望运行此场景大约30秒
配置应如下所示:

Thread Group Number of Threads = N Ramp-up Period = N Loop Count = 1 Constant Throughput Timer Target Throughput = 60 Calculate Throughput based on = "all active threads in current thread group" . . . Loop Controller Loop Count = M . . . HTTP Request . . . 线程数:N

上升期:0

循环计数:3

在恒定吞吐量计时器(线程组内)中,您应该设置目标吞吐量(每分钟采样数)=6,这意味着每10秒请求一次参考链接:

场景1:

number of threads = 20
Ramp-up period =100
loop count=1
number of threads = 20
Ramp-up period =100
loop count=4
每5秒(100/20)就会有1个请求/线程命中服务器,执行将以每次1个请求开始

场景2:

number of threads = 20
Ramp-up period =100
loop count=1
number of threads = 20
Ramp-up period =100
loop count=4
每5秒(100/20)4个请求/线程将命中服务器,一旦第一个请求/线程完成,它将通过执行相同的HTTP请求启动第二个循环,执行持续到所有20个线程执行所有HTTP请求4次