首页 文章

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

提问于
浏览
9

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

4 回答

  • 7

    有关解释请参阅:

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

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

    线程组可以看作是一组虚拟用户,但不一定如此 . 根据您开发测试的方式,它可能是其他内容 .

  • 5

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

    例如,

    • 线程组1

    • 操作1

    • 操作2

    • 行动3

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

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

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

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

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

  • 1

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

  • 0

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

    • 如上所述,ThreadGroup有请求/ "operations"(在Manjula Weerasinge的摘要中),但也有用户和循环配置 .

    • ThreadGroup为每个用户创建一个线程 . 该线程(表示用户)在该循环中按顺序运行该ThreadGroup中的所有操作 .

    • 这些线程在所有循环中重复使用 - 即:循环2也将执行与n个不同用户相同的操作集,但这将重用与循环1相同的线程 .

    总之,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
    

相关问题