【问题标题】:Jmeter - Difference between thread group and loop controller in terms of performanceJmeter - 线程组和循环控制器在性能方面的区别
【发布时间】:2014-09-03 18:21:00
【问题描述】:

我是 Jmeter 的新手。这是一件让我困惑的事情

我正在测试两种使用 Jmeter 计算性能数字的场景

  1. 设置了 1 个线程组,循环计数设置为 50,并拥有一个 https 采样器。
  2. 有一个 1 个线程组,循环计数仅为 1,而是使用循环计数设置为 50 的循环控制器。在这种情况下,我的 https 采样器在循环计数内。

在这两种情况下,https 采样器都运行了 50 次,但我注意到性能差异很大。

For 1 - 100 ms ( Average of 50 calls)
For 2 - 30 ms ( Average of 50 calls)

问题是为什么我会看到这种差异。理想情况下,两种情况都应该给出相同的性能数字。 另外要添加我的 Jmeter 设置,我将“使用保持活动”设置为关闭,并且 https.use.cached.ssl.context 在 jmeter.properties 中设置为 false。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    对于在线程组级别定义 50 个循环的场景,您的 Ramp-up 设置是什么?根据documentation

    加速期告诉 JMeter 需要多长时间才能“加速”到所选线程的全部数量。如果使用 10 个线程,并且加速周期为 100 秒,那么 JMeter 将需要 100 秒才能让所有 10 个线程启动并运行。每个线程将在前一个线程开始后 10 (100/10) 秒后开始。如果有 30 个线程和 120 秒的加速周期,那么每个连续的线程将延迟 4 秒

    默认情况下加速是1。如果您正在为线程组和循环控制器寻找相同的行为,您需要将其设置为0

    展望未来,像 JMeter 一样快地发送请求还不能称为真实的负载场景。真正的用户不会敲打这个或那个端点,他们需要一些时间来“思考”,然后再采取下一步行动。可以使用 Constant Timer 来模拟这个“思考时间”。然而,设置所需负载的更聪明的方法是使用 Constant Throughput Timer

    【讨论】:

    • 在线程初始化后使用迭代和循环控制。你说的是在开始线程之前。我认为 user1788294 仅使用 1 个用户/线程并且知道加速。恕我直言,您所说的有点偏离主题。如果我错了,请纠正。
    • 正确。我只使用 1 个用户/线程。我怀疑是 DNS 缓存导致了这种性能差异。
    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多