JMeter中“Thread Group”的含义是什么?

时间:2012-09-24 02:58:15

标签: jmeter threadgroup

我没有清楚地理解"线程组"的含义是什么?在JMeter。这是否意味着所有测试(Java请求等)都属于在一个线程中运行的某个线程组,或者该线程组中的每个测试都在一个单独的线程中运行?我无法通过JMeter文档或Google搜索来清楚地了解这一点。

4 个答案:

答案 0 :(得分:7)

有关说明,请参阅:

thread group是执行相同方案的一组线程。设置配置中的迭代次数。 一旦每个线程的迭代次数已经过去,线程行为就会根据加速定义并销毁。

请注意,从版本2.8开始,您将能够延迟创建线程,直到线程必须开始工作,这将适用于使用非常短暂的线程和许多线程的测试。

线程组可以看作是一组虚拟用户,但不一定如此。根据您的测试方法,它可能是别的东西。

答案 1 :(得分:5)

据我所知(我想知道的),JMeter线程组中的所有操作每个线程和迭代按顺序运行一次。因此,这意味着线程组中的每个操作都不会在其自己独立的线程集中运行,但它会将每个线程与其线程组中的其他操作共享。

例如,

  • 线程组1
    • 操作1
    • 操作2
    • 行动3

如果我们已安排此线程组线程组1在3个线程中运行,那么会发生什么,

  • 操作1,操作2和操作3将在线程1中执行。
  • 操作1,操作2和操作3将在线程2中执行。
  • 操作1,操作2和操作3将在线程3等中执行

以前我不确定这些操作中的每一个是否都在自己独立的线程上运行。

答案 2 :(得分:1)

线程=模拟用户。
所以线程组=用户。
使用比默认线程组更多的控制权来查看jMeter Plugins thread group controllers

答案 3 :(得分:0)

为了进一步贡献我自己的调查(为了清晰和完整,我希望):

  1. ThreadGroup具有如上所述的请求/“操作”(在Manjula Weerasinge的摘要中),但也有用户和循环配置。
  2. ThreadGroup为每个用户创建一个线程。该线程(表示用户)在该循环中按顺序运行该ThreadGroup中的所有操作。
  3. 这些线程在所有循环中重复使用 - 即:循环2也将执行与n个不同用户相同的操作集,但这将重用与循环1相同的线程。
  4. 总之,ThreadGroup每个用户都有一个线程,它用于运行该组中的所有测试,适用于所有循环。

    在包含10个用户的两个循环中都是如此,其中我的测试包含以下内容:

    System.out.println("MyTest#testSearchNodeByNodeNameExactMatch: MyTest=" 
            +this + "(" +System.identityHashCode(this)  +")" 
            +", thread=" +System.identityHashCode(Thread.currentThread()));
    

    可以使用(假设println输出写入thread-output.2.txt)来汇总日志:

    grep MyTest#test thread-output.2.txt | awk -F ', ' '{print $2}' | sort | uniq