web-dev-qa-db-ja.com

HTTPサーバーの負荷テストのためのツール?

私はテストHTTPサーバー/ Webアプリケーションを数回ロードする必要があり、そのたびに、見つけたツールの品質に圧倒されていました。

では、HTTPサーバーの負荷テストを行う場合、どのツールを使用しますか?そして、次にそれをしなければならないときに、私が間違いを犯す可能性が最も高いのは何ですか?

39
David Wolever

JMeter は無料です。

Mercury Interactive Load Runnerは非常に優れており、非常に高価です。

24
Chad Grant

私の現在の会社はWebサーバーへの25,000の同時接続をシミュレートする必要があるため(この場合はオンライン広告を提供します)、この質問に答えるのは非常に資格があります。

非常に大量の負荷テストの場合、Httperfが適しています。これは無料であり、私たちの経験では、同じハードウェア上でJMeterまたはSTAよりも多くの同時接続をシミュレートできます。

編集:

ご参考までに、低電力で安価な超小型フォームファクターOptiplex 330で1秒あたり3500のリクエストをシミュレートします。これらの小さなボックスのコストはたったの280ドルで、実行するためにそれらの多くが接続されています。 Httperfオンデマンド。比較すると、JMeterはこのハードウェアで約800〜900リクエスト/秒しかプッシュできませんでした。

21
Portman

Webサーバーで一度に1つのURLに負荷をかけたいだけの場合は、Apache ABをダウンロードしてください。 Apache HTTPサーバーが付属しています。

簡単なコマンド

ab -n 10000 -c 10 http://serverfault.com/questions/2107/tools-for-load-testing-http-servers

10ユーザーの同時実行で10000リクエストを実行します。

ブラウジングセッションを記録する場合は、投票してjmeterの回答を受け入れます。 Jmeterは驚くべきものであり、巨大な負荷をかける可能性のある多くのテストマシンに拡張できます。

20

Erlangベースのツール Tsung があります。

http://www.softwareqatest.com/qatweb1.html#LOAD にも、非常に長いツールのリストがあります。

8
Jauder Ho

簡単なテストでは、curlシーケンスとURLのセットを使用できます。たとえば、Googleに対して実行可能な負荷ストレステストを実行するとします...

curl -s "http://google.com?[1-1000]"

これにより、Googleに1000回の呼び出しが行われます。

http://google.com?1  
http://google.com?2  
http://google.com?3 
... 
http://google.com?1000

これについては、 curlを使用してWebサーバーにすばやくストレステストを行う方法について説明します

6
Ian Purton

さまざまなテストを設定する必要があります。

  • 通常のテスト、ユーザーが動作するようにユーザーをシミュレートします。思考時間を実装します(ページ間のHTTPフューリー1はありません)。 1つの方法は、Webセッションを記録することです。そのため、各ページを完了する/読み取るための現実的な時間があります。生産における現在の平均負荷に達するまで、段階的に負荷がかかります
  • 破壊テスト:以前と同じですが、最初のhttp 500エラーが発生するまで負荷を追加します。目標は、壊れるまでに管理できる負荷を知ることです。
  • 長時間実行テスト。最初のシナリオを12時間実行し続け、メモリリークや時間の経過によるパフォーマンスの低下がないことを確認します。

各テストの後/前に、以前のようにプラットフォームを元に戻す必要があります。データベースを復元し、再起動してメモリとキャッシュを消去します。

また、ウォームアップを実装します。実際のテストの前にシナリオを1回起動して、Webページをコンパイルし、データベースへの接続を確立します。そうでなければ、最初の呼び出しは常にあなたの統計で悪いでしょう。

次のような複雑さを追加できます。

  • さまざまなシナリオ(訪問者/ゲスト、メンバー)を使用します。
  • 帯域幅アクセスのシミュレーション
  • 検索された単語をランダム化し、時間を考えます。

最後に重要なこと:完全に同じ方法で再度作成できるように、完了したすべてのシナリオを保存する必要があります。これにより、以前のテストとパフォーマンスを比較できます。

5
Mathieu Chateau

複数の接続の処理方法をテストするだけの場合は、 Siege のようなものを使用できます。それでも素晴らしい方法であるかどうかはまだわかりませんが、少なくとも複数の接続の処理方法がわかります

2
trent

私は openSTA を使用しました。

これは比較的単純なスクリプト言語を使用します。

Webサービス/サーバーを簡単にテストし、独自のスクリプトを作成できます。

これにより、スクリプトを任意の方法でテストに組み込んで、反復数、各反復のユーザー数、各新規ユーザーを導入するための立ち上げ時間、および各反復間の遅延を構成できます。将来的にテストをスケジュールすることもできます。

オープンソースで無料です。

スプレッドシートに保存できる多数のレポートを作成します。次に、ピボットテーブルを使用して、結果を簡単に分析およびグラフ化します。

2
nzpcmad

以前はLoadRunnerを使用していましたが、負荷が高く、負荷テストを実行するシステムを含むMicrosoftのTeam Testerエディションツールも使用しました。ツールの動作にはかなり満足しており、LoadRunnerよりも構文が簡単な.netを使用してテストを拡張できました。

私たちが使用したロードランナーのバージョンも、AJAXサイトを処理できませんでした(これは2000年に戻ったので、ツールは今までに拡張されているはずです)

1
JoshBerke

[〜#〜] wapt [〜#〜] を使用しており、非常にうまく機能します。セットアップが簡単で、数百ドルです。 LoadRUnnerは途方もなく高値であり、Forutune 500を除いてすべての手が届きません。

1
rmalayter

シナリオの複雑さによって異なります。

サーバー上の実際のユーザーの負荷を正しくシミュレートするには、ユーザーが実際に行っていることをシミュレートする必要があります。ユーザーがURLでサーバーにアクセスしただけの場合、無料/簡単なツールで実行できます。

もう少し複雑なWebサイトの場合、動的な値の相関、パラメーター化などを支援するツールを使用することをお勧めします。Load-Runnerなどを使用できます。使用するのは WebLOAD です。 =。

0
Yasei No Umi