JMeter の「スレッド グループ」の意味がよくわかりません。これは、すべてのテスト (Java リクエストなど) が 1 つのスレッドで実行される特定のスレッド グループに属することを意味しますか、またはそのスレッド グループの各テストが別のスレッドで実行されることを意味しますか? JMeter のドキュメントやグーグルからは、これについて明確に理解できませんでした。
4 に答える
説明については、次を参照してください。
Athread group
は、同じシナリオを実行する一連のスレッドです。構成で反復回数を設定します。スレッドの動作はランプアップに従って定義され、スレッドごとの反復回数が経過すると破棄されます。
バージョン 2.8 から、スレッドが動作を開始するまでスレッドの作成を遅らせることができることに注意してください。
スレッド グループは仮想ユーザーのセットと見なすことができますが、必ずしもそうとは限りません。テストの開発方法によっては、別のものになる可能性があります。
私が理解しているように (私が知りたかったこと)、JMeter スレッド グループ内のすべての操作は、スレッドと反復ごとに 1 回ずつ順番に実行されます。したがって、スレッド グループ内の各操作は、独自の個別のスレッド セットで実行されるのではなく、各スレッドをそのスレッド グループ内の他の操作と共有することを意味します。
例えば、
- スレッド グループ 1
- 操作 1
- 操作 2
- 操作 3
このスレッド グループ Thread Group 1 を 3 つのスレッドで実行するようにスケジュールした場合、次のようになります。
- 操作 1、操作 2、操作 3 はスレッド 1 で実行されます。
- 操作 1、操作 2、操作 3 はスレッド 2 で実行されます。
- 操作 1、操作 2、操作 3 はスレッド 3 で実行されます。
以前は、これらの操作がそれぞれ別のスレッドで実行されるかどうかはわかりませんでした。
スレッド = シミュレートされたユーザー。
つまり、スレッド グループ = ユーザーです。デフォルトのスレッド グループよりもはるかに多くの制御を備えたjMeter Plugins スレッド グループ コントローラ
を
確認してください。
私自身の調査に続いてさらに貢献するためだけに(明確さと完全性のために):
- ThreadGroup には、上記 (Manjula Weerasinge の要約) で説明されているように、要求/「操作」がありますが、ユーザーとループの構成もあります。
- ThreadGroup は、ユーザーごとにスレッドを作成します。このスレッド (ユーザーを表す) は、その ThreadGroup 内のすべての操作を、そのループ内で順番に実行します。
- これらのスレッドはすべてのループで再利用されます。つまり、ループ 2 も n 人の異なるユーザーと同じ一連の操作を実行しますが、これはループ 1 と同じスレッドを再利用します。
要約すると、ThreadGroup にはユーザーごとに 1 つのスレッドがあり、すべてのループに対して、そのグループ内のすべてのテストを実行するために使用されます。
これは、私のテストに以下が含まれていた 10 人のユーザーによる 2 つのループにわたって当てはまりました。
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