Jmeterシリーズ~タイマーの基礎入門(11)

導入

JMeter のタイマー (Timer) は、ユーザーがさまざまな時間間隔でリクエストを送信するシナリオをシミュレートするために使用される重要なコンポーネントです。タイマーを使用すると、負荷、同時実行性、容量などのさまざまな条件下でリクエストが送信される頻度をシミュレートできます。

タイマーを使用する

  • サンプラーの下にタイマーを追加して、タイマーが現在のサンプラーにのみ作用するようにすることができます。
  • スレッド グループの下に複数のタイマーを追加し、タイマーの合計をカウントして、スレッド グループの下のすべてのサンプラーに作用することもできます。

タイマースコープ

  • タイマーは、(タイマーの位置がサンプラーの前か下かに関係なく) 後ではなく、各サンプラー (サンプラー) の前に実行されます。
  • サンプラーを実行すると、現在のスコープ内のすべてのタイマーが実行されます。
  • タイマーをいずれかのサンプラーにのみ適用したい場合は、タイマーを子ノードとして追加します。

タイマーの紹介

ここに画像の説明を挿入します

1.固定タイマー

ここに画像の説明を挿入します
1. リクエストする前に各スレッドを同じ指定時間一時停止させる必要がある場合は、このタイマーを使用できます。固定タイマーの遅延は 1 つのサンプラーの応答時間には含まれないことに注意してください。トランザクションコントローラ時間に含まれます。

2.固定タイマーはスレッド グループの下に配置され、そのスコープはすべてのリクエストが固定タイマーで設定された時間だけ遅延することです。リクエスト内に配置された場合、スコープは 1 つのリクエストの遅延時間になります (通常は使用済み)。

3. 「Java リクエスト」サンプラーの場合、タイマーはロードランナーのペーシング (2 つの反復間の間隔) に相当します。

4. 「トランザクション コントローラ」の場合、タイマーはロードランナーの思考時間に相当します(思考時間:実際の動作では、動作中の実際のユーザーの待ち時間をシミュレートします)。

2. 統合ランダムタイマー

ここに画像の説明を挿入します
生成される遅延時間はランダムな値であり、各ランダムな値が出現する確率は等しいです。合計遅延時間はランダム遅延時間と固定遅延時間の合計であり、ランダム遅延時間と固定遅延時間はユーザーが設定できます。

総遅延時間 = 指定範囲内のランダム時間 + 固定遅延時間。
ここに画像の説明を挿入します

andom Delay Maximum(in ミリ秒): ランダム遅延の最大時間単位 (ミリ秒)。たとえば、ここでは 1000 ミリ秒に設定します。

Constant Delay Offset (ミリ秒単位): 固定遅延時間単位ミリ秒。ここでは 2000ms に設定します。

この場合、合計遅延時間の範囲は 2000 ミリ秒から 3000 ミリ秒の間の値になります。

3. 正確なスループットタイマー

ここに画像の説明を挿入します
スループットを制御するために使用されるタイマー。一定スループット タイマーと似ていますが、リクエストをより正確に制御できます。違いは、Constant Throughput Timer は時間に基づいてタイマーを設定する (秒数に達するとリクエストを送信する) のに対し、Precise Throughput Timer はスループットに基づいてタイマーを設定する (一定の量に達するとリクエストを送信する) ことです。つまり、リクエストの速度と数を制御できます。

パラメータの紹介
スレッドを遅延して目標のスループットを確保する

  • 目標スループット (「スループット期間」あたりのサンプル数): テストされると予想される TPS は、小数点以下複数桁まで正確である可能性があります (ただし、最終レポートでは小数点以下 1 桁のみになります)。
  • スループット期間 (秒): TPS テストを実行する秒数 (TPS 単位が秒であるため、ここでは 1 秒を使用します)
  • テスト期間 (秒): テスト期間。前のスレッド グループの値との一貫性を保つだけです。

一括休暇

  • バッチ内のスレッド数 (スレッド): リクエストを一緒に開始するために準備されているスレッドの数 (つまり、ランデブー ポイント) を指し、値は TPS と一致します (TPS が 10 進数の場合は、ここで切り上げられます)。
  • バッチ内のスレッド間の遅延 (ミリ秒): 最初のバッチと 2 番目のバッチ間の遅延時間。デフォルトで十分です。

繰り返し可能な注文を確実にするための設定

  • ランダム シード (0 からランダムに変更): 0 以外のランダム シードは繰り返すことができます。0 は繰り返すことができず、デフォルトで十分です。

4. 一定スループットタイマー

ここに画像の説明を挿入します
指定したスループット数で JMeter を実行させることができます (つまり、TPS を指定します)。これには、1 秒あたりではなく、1 分あたりの実行数を指定する必要があることに注意してください。サーバーにかかる圧力を制御することは非常に実用的です。たとえば、サーバーが 1 分間に処理できる最大スレッド数がわかっている場合は、サーバーで長期疲労強度テストを実施する必要があります。

[スループットの計算に基づいてスループットを計算] には、次の 5 つのオプションがあります。

  • このスレッドのみ: 各スレッドのスループットを制御します。このモードが選択されている場合、合計スループット = 目標スループット * スレッド数になります。

  • すべてのアクティブなスレッド: 設定されたターゲット スループットが各アクティブ スレッドに割り当てられ、各アクティブ スレッドは、前回の実行が終了した後、再度実行する前に適切な時間待機します。アクティブなスレッドとは、同時に実行されているスレッドを指します。

  • 現在のスレッド グループ内のすべてのアクティブなスレッド: 設定されたターゲット スループットは、現在のスレッド グループ内の各アクティブ スレッドに割り当てられます。テスト計画にスレッド グループが 1 つだけある場合、このオプションはすべてのアクティブなスレッド オプションと同じ効果があります。

  • すべてのアクティブなスレッド (共有) : 基本的にすべてのアクティブなスレッドと同じオプションですが、唯一の違いは、各アクティブなスレッドがすべてのアクティブなスレッドの実行が終了した後、再実行する前に適切な時間待機することです。

  • 現在のスレッド グループ内のすべてのアクティブなスレッド (共有) : 基本的には、現在のスレッド グループ内のすべてのアクティブなスレッドと同じですが、唯一の違いは、各アクティブなスレッドがすべてのアクティブなスレッドの前回の実行後、再実行するために適切な時間待機することです。

5. JSR223タイマー(JSR223タイマー)

JSRタイマー、jemterの最新版ではこのタイマーが追加されました このタイマーはBeanShellタイマーの「親セット」に相当することがわかります Javaなどの多言語を使って実装可能です、JavaScript、Beanshell。達成したいこと。
ここに画像の説明を挿入します
パラメータの説明

  • 言語: スクリプト言語を選択します。
  • パラメータ (パラメータ: String/String[] タイプのパラメータ): スクリプトに渡されるパラメータ。
  • スクリプトファイル:スクリプトファイルのパス スクリプト実行後の戻り値はタイマー遅延時間(単位:ミリ秒)です。
  • スクリプト コンパイルのキャッシュ (利用可能な場合): 使用されている言語がコンパイル可能なインターフェイスをサポートしている場合 (Groovy はその 1 つですが、Java、BeanShell、および JavaScript はサポートしていません)、JMeter はテスト計画結果全体にわたって一意の文字列を使用してスクリプトのコンパイルをキャッシュします。
  • スクリプト: スクリプトを手動で作成します。

使用
ここに画像の説明を挿入します
ここに画像の説明を挿入します

6. タイマーの同期

ここに画像の説明を挿入します
同期タイマーは、マルチユーザー同時実行、またはより厳密な同時実行シナリオをシミュレートするために使用されます。

これは、ランデブー ポイントの設定、スレッドのブロック、指定されたスレッド数に達するまで仮想ユーザーの同期を行うために使用され、タスクを同時に実行し、その後それらをまとめて解放するため、瞬間的に多大な負荷がかかる可能性があります。

注: 一般に、同期タイマーは同時ユーザーの数と同じだけ書き込まれます。(同時実行数は、一緒にリリースするために集まった人の数によって異なります。

パラメータの説明

Number of Simulated Users to Group by(模拟用户组数量):
集合点个数 (执行的线程数),如果设置为0,等于设置为线程租中的线程数量。 
 
Timeout in milliseconds(超时时间):
指定线程数多少秒没集合到算超时(以毫秒为单位),默认为0。
如果设置为0,该定时器将会等待线程数达到了 "模拟用户组数量" 中设置的值才释放,不够的话就死等。
如果大于0,那么如果超过 "超时时间" 中设置的最大等待时间后还没达到 "模拟用户组数量" 中设置的值,Timer 将不再等待,释放已到达的线程。

(1)上面两个参数如果都设置了值,则在实际中是哪个条件先达到,定时器先执行哪个,如第一个参数释放线程数量先达到,则不会管超时时间的值,timer 会释放;如果第二个参数超时时间先达到,则不会再等线程数量,按照目前超时的时间点集合的线程数,timer 释放。 
(2)同步定时器(Synchronizing Timer)的超时时间设置要求: 超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

7. ポアソンランダムタイマー

ここに画像の説明を挿入します

このタイマーは、各スレッド要求の前にランダムな間隔で一時停止します。時間間隔のほとんどは、特定の値で発生します。合計遅延は、ポアソン分布値とオフセット値の合計です。

上記は、一時停止時間が 100 ~ 400 ミリ秒の間で分散されることを示しています。

(1)ラムダ(ミリ秒単位): ラムダ値 (ミリ秒単位)。

(2)一定遅延オフセット(ミリ秒単位): 固定遅延オフセット (ミリ秒単位)、一時停止のミリ秒数からランダム遅延のミリ秒数を引いたもの。

8. ガウスランダムタイマー

ここに画像の説明を挿入します

ガウス タイマー。ガウス分布時間間隔を生成します。

各スレッドの遅延時間を標準正規分布に準拠したランダムな時間停止にする必要がある場合は、このタイマーを使用します。合計遅延 = ガウス分布値 (平均 0.0 および標準偏差 1.0) * 指定された偏差値 + 固定遅延offset (計算参照: Math.abs((this.random.nextGaussian() * 偏差値) + 固定遅延オフセット))。

総遅延時間 = ガウス分布値 (平均 0.0、標準偏差 1.0) * 指定された偏差値 + 固定遅延オフセット。

パラメータの説明

  • 偏差: 変動値の範囲である偏差値。
  • Constant Delay Offset: 固定遅延時間。

9. BeanShell タイマー

ここに画像の説明を挿入します

Bean Shell タイマーは、その名前が示すとおり、互いに交互に動作し、そのノードの下にあるサンプラーが交互に実行されます。コントローラーによってトリガーされた実行の数に応じて、コントローラーの下のサブノード <ロジック コントローラー、サンプラー> が順番に実行されます。トリガーされた実行は、スレッド グループ内のスレッドの数、ループの数、およびロジック コントローラーによってトリガーできます。

パラメータの説明

Reset Interpreter(重置解释器):
每次迭代是否重置解析器,默认为 false;在长时间运行的脚本中建议设置为 true。 
 
Parameters(参数:String 或者 String[] ):
BeanShell 脚本的入参。入参可以是单个变量(字符串);也可以是(字符串)数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。 
 
File Name(文件名):
BeanShell 脚本可以从脚本文件中读取。 
 
Script(脚本):
在 Script 区直接写 BeanShell 脚本。

デモ
ここに画像の説明を挿入します
ここに画像の説明を挿入します

参考記事

おすすめ

転載: blog.csdn.net/m0_62091240/article/details/132919255