Jmeter--多个线程组顺序执行和并行执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter--多个线程组顺序执行和并行执行相关的知识,希望对你有一定的参考价值。

参考技术A 本期目标: 理解Thread Groups的顺序执行与并行执行

控制因子:Run Thread Groups consecutively(i.e.one at time)

预期结论:

1、勾选 Run Thread Groups consecutively(i.e.one at time),则表示顺序执行。顺序执行,指的是测试计划中存在多个线程组时,第一个线程组执行完后再执行下一个线程组。

2、不勾选 Run Thread Groups consecutively(i.e.one at time),则表示并行执行。并行执行,指的是指的是测试计划中存在多个线程组时,所有线程组都在同一时刻执行

1、windows系统 + jmeter

2、xampp + phpwind

        1.1、点击Test plan,name输入框输入:Thread Groups Test Plan

        1.2、勾选Run Thread Groups consecutively(i.e.one at time)选项

        2.1、选中Test Plan,单击鼠标右键,Add ->Threads -> Thread Group。

        2.1.1、在新添加的Thread Group 页面:

            name: First Thread Group

            Loop Count: 2

        3.1、选中上一步骤添加的Thread Group: First Thread Group,单击鼠标右键,Add -> Sampler -> HTTP Request

        3.2、接上一步,修改HTTP Request的信息:

            Name: tucool request

            Server Name or IP:127.0.0.1

            Port: 8022(自己搭建环境的端口号)

            Method: GET

            Path: /phpwind/upload/html/channel/tucool

            注:/phpwind/upload, 是我搭建phpwind的主页路径

        4.1、 选中First Thread Group,并复制。

        4.2、选中Thread Groups Test Plan,并粘贴。此时会生成和First Thread Group一样名字的线程组

        4.3、单击第二个线程组:

             Name: Second Thread Group

        4.4、展开Second Thread Group,鼠标单击HTTP Request:

            Name:由tucool request 改成cms request

            Path: /phpwind/upload/index.php

            Parameters列表点击Add按钮:

                name: m

                Values: cms

        5.1、选中First Thread Group ,鼠标单击右键,点击Add Think Times to children

        5.2、点击Think time:

            Action: Pause

            Duration : 1000

        注:为啥要加Think time,是为了看效果,看啥效果呢。

        6.1、选中  Thread Groups Test Plan,鼠标单击右键,Add -> Listener -> View Results Tree

顺序执行时,结果树的执行顺序是:(loop count=2)

    tucool request[loop 1] -> tucool request[loop 2] -> cms request[loop 1] -> cms request[loop 2]

并行执行时,结果树的执行顺序是:

    首先、tucool request[loop 1] 、cms request[loop 1] (runned at on time)

    然后、cms request[loop 2] -> tucool request[loop 2]

注:如果还是想不懂的话,反复清空结果树,多执行几次,然后观察,得出自己的结论(理解透彻)。别人的结论不一定是正确的。

ps:感觉网络还行,图片又不大,就是上传图片上传不了。。。

Jmeter 1 线程组和多个 HttpRequest

【中文标题】Jmeter 1 线程组和多个 HttpRequest【英文标题】:Jmeter 1 Thread Group and Multiple HttpRequest 【发布时间】:2019-09-21 17:07:26 【问题描述】:

我有以下 Jmeter 配置

1 线程组,线程数为 1,在我定义的这 4 个 HttpRequest 下。循环计数为forever

我的问题是我的请求将如何被触发?由于我在我们的线程组中定义了1 as number of threads,它会顺序触发上述4个请求还是并行触发?

如果我在我们的线程组中定义了2 as number of threads,那么请求将如何被触发呢?

为简单起见,假设加速时间为 0。

【问题讨论】:

据我所知,线程数为 1,调用将是连续的,如果线程 t 为 4,它们将是并行的 【参考方案1】:

在同一个线程中,除非你使用Parallel Controller,否则请求是按顺序执行的

如果你有多个线程,它会根据ramp up period执行线程,如果设置为零,所有线程将同时启动,注意理论上它们可以顺序执行请求,但大多是零星的。

您可以使用Synchronizing Timer控制线程

SyncTimer 的目的是阻塞线程,直到 X 个线程被阻塞,然后它们都被立即释放

【讨论】:

当您说 they can execute requests sequentially, but mostly sporadically 时,您的意思是 - 并行但不同时?我无法理解sporadically @BreakingBenjamin 操作系统决定何时在线程之间切换,线程可以完成其操作然后切换到其他线程 我的循环计数器是无限的。因此,假设一个线程组中的所有 2 个线程同时启动(加速时间 0),那么它们会触发请求 - parallelsequentiallysequentially but not in order @BreakingBenjamin 线程将并行运行,您会看到请求的顺序是零星的 你能看看这个***.com/questions/58066367/…。这是上面的延续。【参考方案2】:

每个线程都将完整地执行测试计划,并且完全独立于其他测试线程。多个线程用于模拟与服务器应用程序的并发连接。

更多详情请参考

https://jmeter.apache.org/usermanual/test_plan.html

【讨论】:

以上是关于Jmeter--多个线程组顺序执行和并行执行的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter - 线程组详解

我们可以在Jmeter的单个测试计划中并行运行两个线程组吗?

我们可以在 Jmeter 的一个测试计划中并行运行两个线程组吗?

jmeter并发数和线程数的区别

jmeter并发数和线程数的区别

以并行和顺序方式执行N个线程