【问题标题】:JMeter Threads, Ramp-up and Loop what the correct usage?JMeter Threads、Ramp-up 和 Loop 的正确用法是什么?
【发布时间】:2014-10-27 18:54:59
【问题描述】:

我的印象是我使用了这 3 个设置;线程、加速和循环,在 Y(加速)秒内模拟 X(线程)数量的用户/线程,并在 Z(循环)次数内执行这些操作。例如,我希望每 1 秒 10 个用户持续 1 小时,这相当于 10 个线程、1 秒加速和 3600 个循环。

但是:)

其他人似乎用不同的方式使用它......如果他们想要与上面相同的,他们会将线程设置为 36000,斜坡上升到 3600 秒,循环设置为 1。

我倾向于认为第一种方法是正确的,基于 #a 它读起来更好:) 和 #b 为什么你会有一个以秒为单位的设置来指示你的测试长度

谁能给我一个明确的答案,或者这两种选择都合理吗?

【问题讨论】:

  • 那么任何时候都应该只有 10 个用户执行该操作?或者在测试过程中执行该操作的用户数量是否增加(第二个#1 中的 10 个,第二个#2 中的 20 个...)
  • 文档指出,如果您想要 5 个线程和 5 秒的加速时间,那么它将在 5 秒的加速时间中分散线程的创建和执行,因此每秒 1 个案例。

标签: jmeter


【解决方案1】:

首先,第二个示例中的 36000 个线程似乎非常高! http://wiki.apache.org/jmeter/HowManyThreads 报告人们使用 1000。所以第二种情况甚至可能行不通。

您描述的两种情况并不完全相同,我不确定是否正是您想要的。

在第一个 10 线程加上 1 秒 Ramp-up 意味着所有 10 线程将在 1 秒后使用。然后这 10 个线程将并行执行其操作 3600 次。您没有提到任何意味着测试将需要 1 小时的内容,这将需要循环 3600 次所需的时间。要使其花费一个小时(假设操作花费的时间不超过 1 秒),您需要在循环中使用诸如恒定吞吐量计时器之类的东西来控制循环的速度,以便花费一个小时。

在第二个中,将在 second #1 中创建 10 个线程并开始循环,在 second#2 中创建另外 10 个线程,依此类推,一直到 1 小时 (second#3600)。如果操作花费的时间超过一秒,那么您将在任何一秒内运行超过 10 个线程。

第一种方法更清晰。第二个是对 Ramp-Up 的滥用;它不是用来提供增加到 360000 个线程的,而是用来尝试安排 10 个线程同时运行。

【讨论】:

  • 关于评论“首先,第二个示例中的 36000 个线程似乎非常高!” ...这(根据文档)意味着Jmeter将36000个线程除以3600的Ramp-up,相当于每1秒10个线程...这是我的观点,为什么有人要那样做而不是使用“循环”变量来复合每 1 秒 10 个线程的简单任务。
  • 关于评论“你没有提到任何意味着测试需要 1 小时,只要它需要循环 3600 次”......正确,但是'大致'如果 jmeter 每 1 秒触发 10 个线程(并在一秒钟内完成这些线程)3600 次,那么 3600 x 1 秒 = 1 小时。
  • “第一种方法更清晰。” ...我同意,但我需要为此提供一个很好的论据:)
  • 1) 36000 的加速意味着测试将加速到 36000 个线程,但它不会,因此该测试会误导以后维护它的任何人 2) 不能保证在第二种情况下,任何时候只有 10 个线程会运行,它可能是 10、20、30...
  • “不能保证在第二种情况下任何时候只有 10 个线程会运行”......在任何一种情况下都不能保证,因为就像你说的每批线程可能需要更长的时间比要完成的加速,因此您运行的线程可能比“线程”设置所指示的要多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
  • 2013-03-09
  • 2011-04-15
相关资源
最近更新 更多