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コードを変更することによって。
ありがとう、ディクラン