我想运行带有多个并发线程的JMeter测试,每个线程每10秒发送一次请求.
这些是我的线程属性.
线程数:10
加速期:10
循环次数:1
结果:10个请求分为10秒,所以每秒一个请求,正是我想要的.
现在我想运行此测试3次(30秒).所以我将Loop Count设置为3.
但结果是:10秒内有30个请求.这很奇怪,因为我希望运行30秒并获得每秒1个请求.
如何使用JMeter实现这一目标?
我的最终目标是长时间运行此测试并增加线程数.
如何用JMeter做到这一点?
Tod*_*Zho 14
我今天这个研究,并得出这样的结论:在循环计数的设置是一个完整的用词不当.即使您的测试计划已连续检查运行线程组,它实际上也不会按任何时间顺序循环.它做的是乘以你的线程组并同时运行所有的倍数.因此,Ramp-Up Period只被尊重一次,而不是每个"循环"一次 - 没有时间循环!
有关图表的解释可以在这里找到:http://pro-programmers.blogspot.com/2009/07/jmeter-max-threads-with-rump-up-and.html
根据我对 Jmeter 的经验,如果您设置
线程数:10
提升期:10
循环次数:1
您在 10 秒内创建 10 个线程,因此您每秒创建 1 个线程。循环次数为 1 时,您可以重复此操作一次。 但是,如果您增加循环计数,我认为您不会创建新线程而是在线程组中重复 jmeter 元素过程,因此请求之间的时间不是 30 秒,而是 10 多秒。如果你想在 30 秒内创建 30 个线程,你必须设置
线程数:30
提升期:30
循环次数:1
如果你想以 10 秒的速度重复 10 个线程 3 次,你应该插入一个 Timert->Constant Timer,线程延迟为 10000 ms,这样你就可以在 30 秒内获得 30 个请求(你真的应该考虑任务)
似乎在测试中控制吞吐量的最简单方法是使用标准的"开箱即用" 恒定吞吐量计时器或来自jmeter-plugins集合的自定义吞吐量整形计时器.
在这两种情况下,测试的结构将如下所示:
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定义了迭代次数.
看起来两个定时器都不是绝对精确的,两者都有一点不同的可配置性:


这里还有一个如何改变吞吐量的实际例子.
参考链接:http ://www.testingjournals.com/5-must-know-features-thread-group-jmeter/
场景1:
number of threads = 20
Ramp-up period =100
loop count=1
Run Code Online (Sandbox Code Playgroud)
每 5 秒 (100/20) 1 个请求/线程将命中服务器,执行将以一次 1 个请求开始
场景2:
number of threads = 20
Ramp-up period =100
loop count=4
Run Code Online (Sandbox Code Playgroud)
每 5 秒(100/20) 4 个请求/线程将命中服务器,一旦第一个请求/线程完成,它将通过执行相同的 HTTP 请求启动第二个循环,执行持续到所有 20 个线程执行所有 HTTP 请求 4 次
| 归档时间: |
|
| 查看次数: |
30417 次 |
| 最近记录: |