Apache ab同時負荷ストレステストの実装方法

Apache ab同時負荷ストレステストの実装方法

腹筋コマンドの原則

Apache の ab コマンドは、マルチスレッドの同時リクエストをシミュレートして、サーバーの負荷圧力をテストします。また、nginx、lighthttp、IIS などの他の Web サーバーの負荷をテストすることもできます。
ab コマンドは、負荷を発行するコンピュータに対する要件が非常に低くなっています。CPU やメモリを大量に消費することはありませんが、ターゲット サーバーに大きな負荷がかかります。そのため、特定の DDOS 攻撃に対する必須の対策であり、若者にも高齢者にも適しています。ご自身でご使用の際はご注意ください。そうしないと、一度に過度の負荷がかかると、メモリ不足によりターゲット サーバーがクラッシュし、再起動が必要になる可能性があり、コストに見合いません。

帯域幅が不十分な場合は、ローカルでテストするのが最適です。イントラネット経由でテストするには、イントラネット上の別のサーバーまたは複数のサーバーを使用することをお勧めします。この方法で取得されるデータは、はるかに正確になります。ウェブサーバーのリモートストレステストでは、満足のいく結果が得られないことがよくあります(ネットワークの遅延が長すぎるか、帯域幅が不十分なため)。

ダウンロードしてインストール:
http://mirror.bit.edu.cn/apache//httpd/binaries/win32/?C=M;O=A

httpd-2.2.21-win32-x86-no_ssl.msiを見つける

パラメータのドキュメント:
http://httpd.apache.org/docs/2.2/programs/ab.html

走る:

Windowsシステムでは、cmdコマンドラインウィンドウを開き、Apacheインストールディレクトリのbinディレクトリを見つけます。
cd C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin

次のコマンドを入力します:

ab -n 800 -c 800 http://192.168.0.10/

(-n は 800 件のリクエストを送信し、-c は 800 件の同時実行をシミュレートします。これは 800 人が同時にアクセスすることに相当し、その後にテスト URL が続きます)

ab -t 60 -c 100 http://192.168.0.10/
一度に 100 件のリクエストを 60 秒以内に送信します。

//URLにパラメータを含める必要がある場合は、次のようにします
ab -t 60 -c 100 -T "text/plain" -p p.txt http://192.168.0.10/hello.html

p.txtはab.exeと同じディレクトリにあります
パラメータはp.txtに書き込むことができます(例:p=wdp&fq=78)

結果パラメータの説明:
これは ApacheBench バージョン 2.3 です <$Revision: 655654 $>
著作権 1996 Adam Twiss、Zeus Technology Ltd、http://www.zeustech.net/
Apache Software Foundation にライセンス供与されています (http://www.apache.org/)

192.168.0.10 のベンチマーク (しばらくお待ちください)
100件のリクエストを完了しました
200件のリクエストを完了しました
300件のリクエストを完了しました
400件のリクエストを完了しました
500件のリクエストを完了しました
600件のリクエストを完了しました
700件のリクエストを完了しました
800件のリクエストを完了しました
800件のリクエストを完了しました


サーバー ソフトウェア: Microsoft-HTTPAPI/2.0
サーバーホスト名: 192.168.0.10
サーバーポート: 80

ドキュメントパス: /
ドキュメントの長さ: 315バイト HTTPレスポンスデータ本体の長さ

同時実行レベル: 800
テストにかかった時間: 0.914秒
完了したリクエスト: 800 完了したリクエスト: 800
失敗したリクエスト: 0
書き込みエラー: 0
2xx以外の応答: 800
転送合計: 393600 バイト
転送された HTML: 252000 バイト 転送された HTML コンテンツ
1秒あたりのリクエスト数: 875.22 [#/秒] (平均)
リクエストあたりの時間: 914.052 [ミリ秒] (平均) サーバーがリクエストを受信して​​ページに応答するまでにかかる時間
リクエストあたりの時間: 1.143 [ms] (平均、すべての同時リクエスト全体) 各同時リクエストで消費される平均時間
転送速度: 420.52 [キロバイト/秒] 受信 1 秒あたりのネットワーク トラフィックの平均量。これにより、応答時間の延長を引き起こす過剰なネットワーク トラフィックがあるかどうかを排除できます。


ネットワークに費やされた時間の内訳:
接続時間 (ミリ秒)
最小 平均[+/- 標準偏差] 中央値 最大値
接続: 0 1 0.5 1 3
処理: 245 534 125.2 570 682
待機中: 11 386 189.1 409 669
合計: 246 535 125.0 571 684

シナリオ全体のすべてのリクエストの応答ステータス。このシナリオでは、各リクエストの応答時間があり、ユーザーの50%の応答時間は571ミリ秒未満です。
ユーザーの 80% が 652 ミリ秒以内に応答しました。最大応答時間は 684 ミリ秒未満でした。
一定時間内に処理されたリクエストの割合(ミリ秒)
50% 571
66% 627
75% 646
80% 652
90% 666
95% 677
98% 681
99% 682
100% 684 (最長リクエスト)

以下もご興味があるかもしれません:
  • Apache abツールを使用してApacheサーバーで簡単なストレステストを実行します。
  • Nginx サーバーのストレス テストを実行するための ab の設定方法
  • ab ウェブサイト ストレス テスト コマンド
  • ab ツールを使用してサーバー上で API ストレス テストを実行します。

<<:  jQueryは居住地を選択するためのドロップダウンボックスを実装します

>>:  PDO を使用して SQL インジェクションを防ぐ原理の分析

推薦する

myBatis で条件を削除する際のスプライシング問題を解決する

私は今日、mybatis を学び、データベースに対していくつかの簡単な追加、削除、変更、クエリを実行...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 1

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

Windows 10 での MySQL 5.7.21 インストーラのインストール グラフィック チュートリアル

MySQLをインストールしてメモしておきます。うまくインストールできるか分かりませんが、試してみます...

MySQL が暗黙のデフォルト値を処理する方法

何人かの学生は、マスターとスレーブの間の不一致の問題に遭遇したと述べました。一般的な状況としては、m...

CSS スタイルが機能しない (史上最も完全な解決策の概要)

ページを作成するときに、記述した CSS スタイルが有効にならないことがあります。この現象にはさまざ...

Linuxでpyファイルを直接実行する方法

1. まずファイルを作成します(ファイルを配置するディレクトリにcdします) myTest.py を...

MySQLの挿入文字化け問題を解決する方法

問題の説明: MySQL に中国語の文字を挿入する場合、または MySQL では中国語の文字が正常に...

Centos7.3は起動時に自動的に起動または指定されたコマンドを実行します

Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...

Tomcat9 のダウンロード、インストール、設定 + Eclipse への統合に関する詳細なチュートリアル

トムキャット公式サイトtomcatはローカルサーバーと同等であり、Webページを開くことができます設...

Weibo の一括フォロー解除機能を実装する JavaScript コード

Weibo ユーザーのフォローを一括で解除するクールな JavaScript コードWeibo には...

div の幅が width:100% に設定されていて、パディングまたはマージンが親要素を超えてしまう問題の解決方法

序文この記事では、div の幅を 100% に設定し、親要素を超えてパディングまたはマージンを設定す...

VUE と Canvas を使用して Thunder Fighter タイピング ゲームを実装する方法

今日は、サンダーファイタータイピングゲームを実装します。ゲームプレイは非常に簡単です。それぞれの「敵...

JavaScript でクールなマウス テーリング効果を実装

これを見た後、あなたにも手ができて、さまざまな美しい小さなしっぽを作れるようになることを保証します!...

Vue マルチ選択リスト コンポーネントの詳細な説明

マルチ選択は、すべてのオプションを一覧表示し、ユーザーが Ctrl/Shift キーを使用して複数選...

ネイティブ JS で音楽プレーヤーを実装するためのサンプル コード

この記事では主に、次のように共有されるネイティブ JS 音楽プレーヤーのサンプル コードを紹介します...