すべてのプロダクト
Search
ドキュメントセンター

Performance Testing:一定スループット分散の例

最終更新日:Jan 08, 2025

一定スループットタイマーは、通常、スループットを制御するために使用されます。 ストレステストスクリプトのビジネス目的基づいて、異なる計算モードを使用できます。 分散ロードジェネレーターをストレステストに使用する場合、異なるストレステストモデルに合わせて、スクリプトのパラメーター値とモードを適切に設定する必要があります。 このトピックでは、シナリオ別に一般的に使用される 2 つの計算モードと、異なる計算モードの分散適応パフォーマンスについて説明します。

背景情報

グローバル分散適応モードと単一分散適応モードを使用できます。 この例では、2 つの IP アドレスを使用して、スレッドグループ内で 100 人の仮想ユーザーをシミュレートします。 スクリプトでは、ターゲットスループットは 1 分あたり 100 リクエストに設定され、計算モードは [このスレッドのみ] に設定されています。

  • グローバル分散適応モードでは、スクリプトのしきい値は、クラスター内のすべてのロードジェネレーターの合計しきい値として適用されます。 単一ロードジェネレーターのしきい値 = スクリプトのしきい値 / IP アドレスの数。 この場合、合計ターゲットスループットは、次の式を使用して計算されます。2 × (仮想ユーザー / 2) × (ターゲットスループット / 2) = 1 分あたり 5,000 リクエスト。

  • 単一分散適応モードでは、スクリプトのしきい値は各ロードジェネレーターに適用されます。 仮想ユーザーの負荷レベルは、設定値と一致する必要があることに注意してください。 この場合、合計ターゲットスループットは、次の式を使用して計算されます。2 × (仮想ユーザー / 2) × ターゲットスループット = 1 分あたり 10,000 リクエスト。

シナリオ

ほとんどの場合、サンプラー、スレッドグループ、または複数のスレッドグループが使用可能な場合はシナリオ全体のスループットしきい値を設定できます。 複雑な粒度でスループットしきい値を設定しないことをお勧めします。 この例では、2 つの IP アドレスを使用して、スレッドグループ内で 100 人の仮想ユーザーをシミュレートします。 スクリプトでは、ターゲットスループットは 1 分あたり 100 リクエストに設定されています。

シナリオ 1:サンプラーのスループットしきい値を設定する

  1. [PTSコンソール]にログオンします。パフォーマンステスト > シナリオの作成JMeter にログインし、 を選択し、 をクリックします。

  2. [詳細設定] セクションで、単一ジェネレーター一定スループットタイマー セクションで、 に を選択します。

    説明

    [シナリオ設定] タブの [分散適応] セクションのパラメーターは、アップロードしたスクリプトにタイマーが設定されている場合にのみ表示されます。

    单机生效

  3. JMeter スクリプトでは、Constant Throughput Timer を Sampler の下に配置します。

  4. 次の図に示すように、[ターゲットスループット] パラメーターを 100(分単位)に設定します。 [選択] this thread onlyスループットの計算基準image パラメーターを (分単位)に設定します。 [スループットの計算基準] に を選択します。

シナリオ 2:スレッドグループのスループットしきい値を設定する

  1. [PTSコンソール]にログオンします。パフォーマンステスト > シナリオの作成JMeter にログインし、 を選択し、 をクリックします。

  2. [詳細設定] セクションで、グローバル一定スループットタイマー セクションで、 に を選択します。

    説明

    [シナリオ設定] タブの [分散適応] セクションのパラメーターは、アップロードしたスクリプトにタイマーが設定されている場合にのみ表示されます。

    全局生效

  3. JMeter スクリプトでは、Constant Throughput Timer を Thread Group の下に配置します。

  4. 次の図に示すように、[ターゲット スループット] パラメーターを 100(分単位)に設定します。現在のスレッドグループ内のすべてのアクティブなスレッド[スループットの計算基準] には を選択します。image パラメーターを (分単位)に設定します。 [スループットの計算基準] に を選択します。

5 つの計算モード

この例では、1 つのロードジェネレーターを使用して、それぞれ 100 人の仮想ユーザーと 200 人の仮想ユーザーを含む 2 つのスレッドグループをシミュレートします。 各スレッドグループに 2 つのサンプラーが設定されています。 スクリプトでは、[ターゲットスループット] は 1 分あたり 100 リクエストに設定されています。

説明

この例は参照用です。 詳細については、Apache JMeter のドキュメントをご参照ください。

計算モード

説明

備考

このスレッドのみ

ターゲットスループットは各スレッドに適用されます。 スレッドグループの合計スループットは、次の式を使用して計算されます。仮想ユーザー × ターゲットスループット。

アイドルスレッドのスループットはありません。 各サンプラーのスループットは、次の式を使用して計算できます。

  • スレッドグループ 1 のサンプラー 1.1 とサンプラー 1.2:仮想ユーザー × ターゲットスループット = 100 × 100/60 ≈ 1 秒あたり 166 リクエスト。 各サンプラーのスループットは約 83 リクエスト/秒です。

  • スレッドグループ 2 のサンプラー 2.1 とサンプラー 2.2:仮想ユーザー × ターゲットスループット = 200 × 100/60 ≈ 1 秒あたり 320 リクエスト。 各サンプラーのスループットは約 160 リクエスト/秒です。

  • 単一サンプラーのスループットを設定して、サンプラーレベルのスループット制御を実現できます。

すべてのアクティブスレッド

設定されたターゲットスループットは、すべてのスレッドグループのすべてのアクティブスレッドに適用されます。 スレッドが終了した後、スレッドは一定時間待機してから再実行されます。 これはスループットの制御に役立ちます。

複数のスレッドグループが使用可能な場合は、次の項目に注意してください。

  • スレッドグループの最初のサンプラーが最初に実行されるため、2 番目のサンプラーのスループットが過度に低くなります。 ターゲットスループットはスレッドグループレベルで設定されます。 スレッドあたりのスループットは、それぞれ 1 分あたり 1 リクエストと 1 分あたり 2 リクエストです。 その結果、2 番目のサンプラーのスループットが低下します。

  • 各スレッドグループのターゲットスループットは 1 分あたり 100 リクエストで、グローバルスループットは 1 分あたり 200 リクエストです。

  • 一定の実行時間の後、スレッドグループの各サンプラーによって送信されるリクエストの数は同じになり、仮想ユーザーの数と等しくなります。 この場合、各スレッドグループのサンプラーのスループットはバランスが取れています。

現在のスレッドグループ内のすべてのアクティブスレッド

設定されたターゲットスループットは、現在のスレッドグループのアクティブスレッドに適用されます。 スレッドが終了した後、スレッドは一定時間待機してから再実行されます。 これはスループットの制御に役立ちます。

スレッドグループが 1 つしかない場合は、前の計算モードと同じルールが適用されます。 次の項目に注意してください。

  • 2 つのタイマーの設定は同じです。 したがって、前の計算モードと同じルールが適用されます。

  • 2 番目のタイマーのターゲットスループットを 1 分あたり 200 リクエストに変更すると、各スレッドグループのスループットを制御できます。

すべてのアクティブスレッド(共有)

設定されたターゲットスループットは、すべてのスレッドグループのすべてのアクティブスレッドに適用されます。 すべてのアクティブスレッドが終了した後、すべてのスレッドは一定時間待機してから再実行されます。 これはスループットの制御に役立ちます。

シナリオ全体で [命令の追加] ドロップダウンリストから [遅延] を選択すると、同様のパフォーマンスを実現できます。 すべてのアクティブスレッドが終了した後、スレッドを再実行できます。 次の項目に注意してください。

  • ストレステスト中に、複数のサンプラーのデータが同時に変化することはありません。

  • リクエストを開始したスレッドは、最初のサンプラーで一時停止します。

  • シナリオ全体のスループット目標は 1 分あたり 100 リクエストで、複数のタイマーの設定は一貫しています。

現在のスレッドグループ内のすべてのアクティブスレッド(共有)

構成済みのターゲットスループットは、現在のスレッドグループ内のすべてのアクティブスレッドに適用されます。すべてのアクティブスレッドが終了した後、すべてのスレッドは一定時間待機してから再実行されます。これは、スループットの制御に役立ちます。

現在のスレッドグループ内のすべてのアクティブスレッドが終了した後、スレッドは一定時間待機してから再実行されます。

  • 現在のスレッドグループのターゲットスループットは、1 分あたり 100 リクエストです。各スレッドは、現在のスレッドグループ内の他のアクティブスレッドとの連携に基づいて実行されます。

  • スレッドグループごとにスループットを個別に構成および制御できます。

他のコンピューティングモードの分散適応

コンピューティングモード

シナリオ

グローバルモード

シングルモード

すべてのアクティブスレッド

このコンピューティングモードは、スループットが制御されるシナリオ全体に適しています。複数のスレッドグループのビジネスモデルは似ています。シナリオ全体のスループットは固定されています。このようにして、スループットを各スレッドグループに均等に分散できます。

ロードジェネレーターを使用して 50 の仮想ユーザーをシミュレートします。ロードジェネレーターのスループットは 1 分あたり 50 リクエストで、これは目標スループットを 2 で割ることによって得られます。グローバルスループットは 1 分あたり 100 リクエストのままです。複数のスレッドグループが使用可能な場合、スループットは累積されます。

ロードジェネレーターを使用して 50 の仮想ユーザーをシミュレートします。ロードジェネレーターのスループットは 1 分あたり 100 リクエストです。グローバルスループットは 1 分あたり 200 リクエストで、これは目標スループットに IP アドレスの数を掛けたものです。複数のスレッドグループが使用可能な場合、スループットは累積されます。

すべてのアクティブスレッド(共有)

スループットはシナリオ全体に適用されますが、スレッドグループには適用されません。スループットは、複数のスレッドグループの累積値よりもわずかに低くなります。

スループットは、スレッドグループ 1 では 1 分あたり 100 リクエスト、スレッドグループ 2 では 1 分あたり 200 リクエストです。グローバルスループットは 1 分あたり 150 リクエストで、これは 2 つのスレッドグループの平均値です。

スループットは、スレッドグループ 1 では 1 分あたり 100 リクエスト、スレッドグループ 2 では 1 分あたり 200 リクエストです。ロードジェネレーターのスループットは 150 で、これは次の式を使用して計算されます。(100 + 200)/2。グローバルスループットは 1 分あたり 300 リクエストです。ロードジェネレーターの複数のサンプラーがバランスに達するには、長い時間がかかります。

現在のスレッドグループ内のすべてのアクティブスレッド(共有)

スループットは、スレッドグループ内のすべてのアクティブスレッドに適用されます。グローバルスループットは、複数のスレッドグループの累積値よりもわずかに低くなります。

スレッドグループ 1 のスループットが 1 分あたり 100 リクエスト、スレッドグループ 2 のスループットが 1 分あたり 200 リクエストの場合、グローバルスループットは 1 分あたり 300 リクエストで、これはスレッドグループ 1 とスレッドグループ 2 の累積値です。

スレッドグループ 1 のスループットが 1 分あたり 100 リクエスト、スレッドグループ 2 のスループットが 1 分あたり 200 リクエストの場合、ロードジェネレーターのスループットは 1 分あたり 300 リクエスト、グローバルスループットは 1 分あたり 600 リクエストです。ロードジェネレーターの複数のサンプラーがバランスに達するには、短い時間がかかります。