Jmeter中共享模式"所有线程"和"当前线程组"之间的区别

Ris*_*att 7 jmeter

Jmeter中共享模式"所有线程"和"当前线程组"之间的实际区别是什么?
谁能详细解释一下?

我有一个班轮定义,但我无法正确理解它.

谢谢,Rishil

Ali*_*lik 8

那么,根据参考:

 • All threads - (the default) the file is shared between all the threads. 
 • Current thread group - each file is opened once for each thread group in which the element appears
Run Code Online (Sandbox Code Playgroud)

因此,对于"所有线程",如果脚本中有多个引用同一文件的CSV数据集配置元素,则下一个CSV数据集配置元素将从先前打开的文件继续读取(即在prevoius CSV数据集配置元素中) ),在"当前线程组"的情况下,每个后续的CSV数据集配置元素将重新打开您的文件.

请看下面的例子:

在此输入图像描述

在这种情况下,每个CSV数据集配置元素:
•使用相同的csv文件;
•读取文件一次,直到EOF;
•从头开始读取文件:由于共享模式=当前线程组,每次都会重新打开文件.

如果在这种情况下将共享模式更改为"所有线程"而没有任何其他更改,则第二个(TG-04)和第三个(TG-05)CSV数据集配置元素将不会读取任何内容,因为在TG-之后csv文件将保持打开状态03和文件光标将指向文件的结尾.

实现细节在CSVDataSet类描述中找到:

该类使用FileServer别名机制来提供不同的共享模式.对于所有线程,文件别名设置为文件名.否则,后缀将附加到文件名,以使其在所需的上下文中唯一.对于当前线程组,使用线程组identityHashcode; 对于单个线程,线程哈希码用作后缀.


更新2012-02-09:
假设你有配置,如下面的评论:

  • N个线程
  • 1 CSV数据集配置
  • 1个csv数据文件
  • csv数据文件中的N个条目

所以你会得到:
1.N次出现 - 在共享模式="所有线程"或"当前线程组"的情况下:每个线程将从csv读取1个条目:第一个线程 - 第一个条目,...,第N个thread - 第N个条目.
2. N*N外观 - 在共享模式="当前线程"的情况下:每个线程将读取来自csv的所有条目.

这两个语句都适用于使用以下设置设置CSV数据集配置的情况:

Recycle on EOF? = false
Stop thread on EOF? = false

(上面的截图).