JMeter循环计数

时间:2012-02-03 14:03:57

标签: jmeter

我想运行带有多个并发线程的JMeter测试,每个线程每10秒发送一次请求。

这些是我的主题属性。

主题数量:10

加速期:10

循环次数:1

结果:1​​0个请求分为10秒,所以每秒都有一个请求,正是我想要的。

现在我要运行此测试3次(30秒)。所以我将Loop Count设置为3。

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

如何使用JMeter实现此目的?

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

如何使用JMeter执行此操作?

6 个答案:

答案 0 :(得分:11)

我今天对此进行了研究并得出了这样的结论: 循环计数设置是一个完整的用词不当 。它实际上并不是循环在任何时间顺序意义上,即使您的测试计划已连续连续运行线程组。它所做的是乘以您的线程组并同时运行所有倍数。因此, Ramp-Up Period 仅在一次时被尊重,并且每个“循环”不会一次 - 没有时间循环!

可以在此处找到有关图表的说明:http://pro-programmers.blogspot.com/2009/07/jmeter-max-threads-with-rump-up-and.html

答案 1 :(得分:5)

似乎在测试中控制吞吐量的最简单方法是使用Constant Throughput Timer中的标准“开箱即用”Throughput Shaping Timer或自定义jmeter-plugins collection


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

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
        . . .

这里Loop Controller定义了迭代次数。


看起来两个定时器都不是绝对精确,两者都有一点不同的可配置性:

CTT

TST


这里还有一种practical example如何改变吞吐量。

答案 2 :(得分:2)

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

主题数量:10

加速期:10

循环次数:1

你可以在10秒内创建10个线程,这样你就可以每秒创建1个线程。 循环计数为1时,重复此操作一次。 但是如果你增加循环次数我认为你创建新线程但是在线程组中重复jmeter元素过程因此请求之间的时间不是30秒但只有10多岁。 如果要在30秒内创建30个线程,则必须设置

主题数量:30

加速期:30

循环次数:1

如果你想重复10次线程3次,加速10秒,你应该插入一个Timert-> Constant Timer,线程延迟为10000 ms,这样你就可以在30秒内获得30个请求(实际上你应该考虑执行任务的时间)

答案 3 :(得分:1)

我对Ramp-Up的理解是,值0将同时触发所有线程(同时)。

您可以通过设置以下内容来实现您想要的目标:

  • 主题数:10
  • 加速期:0
  • 圈数:N

然后使用Controller确定何时结束每个循环。

答案 4 :(得分:0)

是的,循环计数参数不直观。根据我的想法,它实际上是线程/用户执行特定测试的次数

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

  • 运行N个并发线程/用户
  • 他们每10秒发送一次请求
  • 您希望运行此方案约30秒

配置应如下:

线程数: N

加速期: 0

圈数: 3

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

答案 5 :(得分:0)

参考链接:http://www.testingjournals.com/5-must-know-features-thread-group-jmeter/

方案1:

number of threads = 20
Ramp-up period =100
loop count=1

每5秒(100/20)1个请求/线程将命中服务器,执行将一次启动1个请求

方案2:

number of threads = 20
Ramp-up period =100
loop count=4

每5秒(100/20)4个请求/线程将命中服务器,一旦第一个请求/线程完成,它将通过执行相同的HTTP请求启动第二个循环,执行将持续到所有20个线程执行所有HTTP请求4时间