0

JMeter を使用してプラットフォームのパフォーマンスのプロファイリングを成功させた後、昨年のログから抽出した分単位のトランザクション データに基づいて 24 時間の負荷をシミュレートするように依頼されました。

この時点で、jmeter でスレッド作成の静的な性質を持っているため、これが簡単に達成できるかどうか疑問に思っています。jmeter-plugins.org のプラグインと一緒に通常のプラグインを調べましたが、この種の整形を行う簡単な方法はまだ見つかりませんでした。

スループット シェーピング タイマーを動的にフィードする groovy スクリプトを作成する代替案を検討していますが、これが適切な方法であるかどうかはわかりません。

助言がありますか?

更新:次の組み合わせを試しました(アロンとダンも提案したように):-1つのループスレッドと60秒の遅延タイマーを持つ1つのスレッドグループ。このスレッドは毎分 csv から次の 1 分間のリクエスト数を読み取り、それを次のスレッド グループに渡します (groovy スクリプトとグローバル props を使用)。最初のスレッド グループによって毎分更新されます。

部分的には機能しますが、ここでの制限は、負荷/分がすべてのアクティブなスレッド間で分割されるため、その間に負荷要求が変更された場合でも、スレッドの一部が実行を待機することです。正しいシミュレーションを行うには、1 分以内に実行されなかったすべてのスレッドを中断して再開する方法が必要だと思います。

したがって、具体的な例として、最初の 1 分間に 100 のリクエストがあり、2 番目に 5000 のリクエストがあります (これは大きな変動のある実際のデータです)。最初の 1 分間で 300 のスレッドが開始されました (これは、受け入れられる同時接続の最大数です)。 、それらは非常に高速に実行されるため、計算されたスループットを満たすために 1 分以上遅延することになります。そのため、多くのスレッドがまだスリープしているため、次の 1 分間の 5000 リクエストは実行される機会がありません。

そのため、より多くのスループットが必要なときにスリープ状態のスレッドを中断する方法を探しています。おそらくGroovyから、またはJMeterコードを変更することによって。

ありがとう、ディクラン

4

2 に答える 2

4

これには、JMeter のコンスタント スループット タイマーを使用する必要があります。すべての値を含む CSV ファイルと組み合わせると、完全に機能するはずです。次のリンクを参照してください: http://jmeter.apache.org/usermanual/component_reference.html#Constant_Throughput_Timer http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config

最高です、アロン。

于 2013-10-03T10:15:45.330 に答える
1

JSR 223 + Groovyスクリプトの使用
JMeter でスクリプトを実行するには、多くのオプションがあります。

  1. ビーンシェル
  2. BSF およびサポートされているすべての言語 Javascript、Scala、Groovy、Java ...
  3. JSR223 およびサポートされているすべての言語 Javascript、Scala、Groovy、Java ...

怠け者で知っている言語を選択することはできますが、それについては忘れてください。
最も効率的なオプションを使用しますJSR223 + Groovy + Caching(JMeter 2.8 以降は外部スクリプトでサポートされ、次の JMeter 2.9 でも埋め込みスクリプトでサポートされます)。

groovy-VERSION-all.jarGroovy の使用は、<JMETER_HOME>/libフォルダーに追加するのと同じくらい簡単 です。

ただし、もちろん、スクリプトが必要であり、効率的に記述されていることを確認してください。過度にスクリプトを作成しないでください

于 2013-10-03T21:59:34.537 に答える