同じミリ秒で数百回ヒットして、URL の負荷テストを行いたいと考えています。JMeter を試してみましたが、同じミリ秒で 2 つのリクエストをヒットできました。これは、私のマシンがスレッドを十分に速く作成できないという問題のようです。問題の解決策はありますか?
4 に答える
JMeter では、同期タイマーを 100 に設定して使用できます。この方法では、すべてのスレッドが 100 個になるまで待機し、サーバーにヒットします。
もう 1 つの解決策は、このスループットに達するようにスレッドの数を増やすことです。JMeter の次のバージョン (2.8) では、必要に応じてスレッドを作成できます (必要に応じて作成されます)。とにかく、同じミリ秒で数百回ヒットするのは負荷が高いため、JMeter を正しく調整する必要があります。
よろしく
フィリップ
JMeter はブロッキング HTTP クライアントを使用します。JMeter で 100 のスレッドが必要な 100 のリクエストでサーバーをまったく同時にヒットするには、100 のスレッドが必要です。それを提供しても、実際にそのようなコードを同時に実行するための 100 個のコアはまだありません。コアが 100 個あったとしても、スレッドの開始には時間がかかるため、事前に開始して何らかのバリアで同期する必要があります。そして、それは JMeter ではサポートされていません。
サーバーを「同じミリ秒」で実行したいのはなぜですか? 通常の負荷テストでは、できるだけ多くの接続でサーバーを呼び出すだけですが、必ずしも同時にではありません。さらに、いわゆる思考時間をシミュレートするために、リクエスト間にランダムなスリープを追加することさえあります。
Philippeの回答によると、JMeterは実際に同期リクエストをサポートしています。しかし、おそらく、 -c100 を使用するApache Benchのようなものが必要な場合(または、動作するものに調整すること) がより良いオプションでしょうか? これはかなり基本的なものですが、オーバーヘッドがはるかに小さいため、この状況で役立つ可能性があります。
しかし、私は Tomasz の回答から盗み、おそらくこれは負荷テストにアプローチするための最良の方法ではないという彼の懸念を繰り返します。実際のトラフィックを複製しようとしている場合、そのような高レベルの同時実行が本当に必要ですか?
負荷の生成には、Jmeter-server とクライアント マシンのホストを使用する必要があります。単一のマシンでは、負荷自体を生成するには不十分です。