我想运行带有多个并发线程的JMeter测试,每个线程每10秒发送一次请求。
这些是我的主题属性。
主题数量:10
加速期:10
循环次数:1
结果:10个请求分为10秒,所以每秒都有一个请求,正是我想要的。
现在我要运行此测试3次(30秒)。所以我将Loop Count设置为3。
但结果是:10秒内有30个请求。这很奇怪,因为我希望运行30秒并获得每秒1个请求。
如何使用JMeter实现此目的?
我的最终目标是长时间运行此测试并增加线程数。
如何使用JMeter执行此操作?
答案 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定义了迭代次数。
看起来两个定时器都不是绝对精确,两者都有一点不同的可配置性:
这里还有一种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将同时触发所有线程(同时)。
您可以通过设置以下内容来实现您想要的目标:
然后使用Controller确定何时结束每个循环。
答案 4 :(得分:0)
是的,循环计数参数不直观。根据我的想法,它实际上是线程/用户执行特定测试的次数
因此,如果我理解你想要的意图:
配置应如下:
线程数: 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时间