首页 文章

Jmeter连续运行线程组与线程数无关

提问于
浏览
3

以下Jmeter测试架构有什么区别?

--Test Plan(Run Thread Groups Consecutively not checked)
    --Thread Group 1(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 2(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 3(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 4(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 5(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 6(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 7(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 8(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 9(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 10(No of Threads(users) : 1, Ramp up Period(in Seconds) : 1, Loop count: 1)

--Test Plan(Run Thread Groups Consecutively not checked)
    --Thread Group 1(No of Threads(users) : 10, Ramp up Period(in Seconds) : 1, Loop count: 1)

--Test Plan(Run Thread Groups Consecutively not checked)
    --Thread Group 1(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 2(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 3(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 4(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)
    --Thread Group 5(No of Threads(users) : 2, Ramp up Period(in Seconds) : 1, Loop count: 1)

在我的场景中,我想对我的解决方案进行负载测试,其中我有不同用户执行的不同测试用例 . 在这里,用户一次只能进行相同的操作 . 所以我为我的测试用例使用不同的线程组 . 随着我的场景增加,线程组中的 No of Threads(users) 对我来说并不合乎逻辑 . 所以我在我的测试计划中取消选中 Run Thread Groups Consecutively 但不确定它是否真的进行了并发性测试 .

3 回答

  • 1

    如果检查 Run Thread Groups Consecutively ,则线程组将连续启动 . 这意味着JMeter将首先启动线程组01,然后启动线程组02,......,依此类推 . 这是一个选项,指示JMeter以串行方式而不是并行方式运行 Thread Groups .

    因此,如果您在测试计划中取消选中 Run Thread Groups Consecutively ,它将在您的测试中生成 concurrency .

  • 2

    case 1 中,保证从执行开始就有10个线程的并发 .

    case 2 中,1秒后达到10个线程的并发,速率为每100毫秒1个线程(假设没有线程在该时间内完成执行) .

    Case 3 混合两个选项:5个线程将立即启动,1秒后再启动5个,因此1秒后达到10个线程的并发性 .

    请注意,当我说“达到并发”时,我指的是JMeter方面 . 根据脚本的设置,稍后可能会达到服务器的并发性 .

    同样重要的是你有“ Loop count: 1 ” . 如果所有用户长时间(分钟/小时)运行该单循环迭代,或者线程组内有循环控制器,则3个选项之间的差异对于统计信息来说无关紧要 . 但是,如果该迭代很短(几秒到几分钟),或者每个线程中的每个操作都是唯一的,那么在选项2和3(尤其是2)的情况下,您的统计信息将存在缺陷,因为在早期开始的线程上进行了许多操作将在达到10个线程并发之前执行,反之亦然 .

  • 3

    JMeter的行为如下:

    • 对于每个线程组,它在"ramp-up"期间启动线程

    • 线程开始执行采样器颠倒或根据Logic Controllers

    • 当线程关闭时没有't have a sampler to execute or loop to iterate - it'

    所以你可以遇到第一个线程已经完成所有事情并被关闭而第10个线程尚未启动的情况 .

    如果你想保证并发 - 在Thread Group级别提供足够的循环 . 您还可以使用ie Ultimate Thread Group,它具有一些额外的功能,可以灵活地定义用户到达率并可视化预期的并发性 .

    顺便说一下,即使在使用Throughput Controller的同一个线程组中,您也可以让不同的虚拟用户执行不同的场景 . 有关可能方法的详细说明,请参阅Running JMeter Samplers with Defined Percentage Probability文章 .

相关问题