ホームページ  >  記事  >  バックエンド開発  >  高性能 PHP 学習ベンチマーク テクノロジー

高性能 PHP 学習ベンチマーク テクノロジー

WBOY
WBOYオリジナル
2016-06-23 13:56:39981ブラウズ

1. ベンチマーク テスト ツール

ベンチマーク テスト ツールは、さまざまなシミュレートされたユーザー リクエストが発生したときの Web サーバーの応答に関する統計情報を提供します。これにより、Web サーバー上の特定の Web ドキュメントをリクエストする任意の数のユーザーをシミュレートできるようになります。さらに重要なことに、Web サーバー上のドキュメントに同時にアクセスする任意の数のユーザー (同時リクエスト) をシミュレートできるようになります。

たとえば、各ツールによって提供される情報は以下に関連しています:
1. リクエストへの応答に費やされた合計時間
2. サーバーからの合計応答サイズ
3. Web サーバーが送信できるリクエストの合計数1 秒あたりの処理数

2. Apache Benchmark
ここでは、Apache Benchmark (ab/ab2) ツールを紹介します。
これは、デフォルトの Apache インストールの一部である最も有名なベンチマーク ツールの 1 つであり、特定の URL に対する任意の数のリクエストをシミュレートすることで Web サーバーの負荷テストを行うことができます。 ab ツールは次の情報を提供します:
1. 転送された合計データ サイズ (バイト単位)
2. シミュレートされたトラフィックの下で Web サーバーが 1 秒あたりにサポートできるリクエストの総数
3. 完了までにかかる最長時間request ( (ミリ秒単位)
4. リクエストの完了にかかる最短時間 (ミリ秒単位)
注: ab コマンドは ubuntu オペレーティング システムで実行され、作成者は opensuse を使用します。このシステムで使用されるコマンドは ab2 です. そこで筆者は操作時にab2コマンドを使用しますが、便宜上書き込み時には必ずabコマンドを記述します。


ab ツールを使用して、次のようなさまざまな負荷シミュレーションを実行することもできます。
1. Web ドキュメントのリクエストのシミュレーション
2. 指定された時間内のリクエスト
3. キープアライブがオンになっている場合のリクエスト
最も重要つまり、Apache Benchmark は Apache Web サーバーから独立しているため、このツールを実行しているコンピューター上の Web サーバーが非アクティブでも ab を実行できます。



3. Apache Benchmark をインストールします Linux/Unix システムでは、Apache がインストールされている限り、ab コマンドを使用できます。
Windows では、ユーザーは http://httpd.apache.org/ を開くことができます。このページが読み込まれたら、ページの左側にある [ミラーからダウンロード] リンクをクリックし、お使いのシステムに適切なダウンロード パッケージ (Windows 32 バイナリ バージョン) を見つけてダウンロードします。
パッケージがダウンロードされたら、インストール ウィザードを実行して、システム上の任意の場所にソフトウェアをインストールできます。 Apache をデフォルトの場所 C:Program FilesApache Software Foundation にインストールしましたが、システム上のどこにでもインストールできます。ここで選択した場所は、APACHE_HOME 参照によって指定された場所です。
ここで、Apache2.2bin を開きます。以下に示すように、ファイルとディレクトリのコレクションが表示されるはずです。


4. ab コマンドを使用します
次に、ab ツールを使用してみましょう。 (ベンチマーク テストでは例として www.example.com を使用します) すべての ab コマンドの構成は次の構造に従います:
ab [オプション] [Web ドキュメントへのフル パス]
例:
ab -n 1 http://www .example.com/
n は、指定された URL に対して実行されたリクエストの数を表します。この例では、ab は Web ドキュメントを 1 回だけリクエストしますが、n の値は 50,000 未満の任意の数値にすることができます。デフォルトでは、n は 1 に設定されます。
コマンドの次の部分は URL 部分です。実行したばかりのコマンドの URL は http://www.example.com/ です。 test.php (存在しません) など、このドメイン内のドキュメントをテストすることを選択した場合、URL は次のようになります: http://www.example.com/test.php
上記のコマンドを実行した結果は次のようになります。以下に示す:





URLhttp://www.example.com ab response

上の図のデータは 4 つの部分に分かれています 1. サーバー情報

には Web 上で実行されているソフトウェアが含まれますサーバー、ホスト名、およびサーバー監視ポート番号。

2. スクリプト情報
シミュレーションを実行する Web ドキュメントに関する情報が含まれます。ドキュメント パスには要求されたドキュメントが含まれ、ドキュメント長には、応答内のすべての HTML、画像、CSS、JS、その他のバイトの合計が含まれます。

3. 接続情報
情報本体が含まれます。これは、「リクエストに対する応答を受け取るまでにどれくらい時間がかかりますか?」、「返されるデータの量はどれくらいですか?」などの情報に答えます。そして最も重要なのは、「ドキュメントの処理中に Web サーバーがサポートできるユーザーの数は何人ですか?」にも答えます。
以下の表は、このセクションのデータの完全なリストと説明を示しています。 4. 接続インジケーターの内訳
最後の部分には、Connect、Processing、Waiting、および Total フィールドを含むテーブルが含まれています。これらのフィールドは、リクエストが各プロセス状態で費やした時間を示します。私たちが最も関心があるのは、合計フィールドとその最大値と最小値の列です。






リクエストは、リクエストされたポジションが 100 件に達するまで行われます。 c タグを使用する場合の注意点の 1 つは、実行されるリクエストの総数 n 以下の値を使用することです。

例: ab -n 100 -c 10 http://www.example.com

ab コマンドの応答は次のとおりです

www.example.comの同時実行シミュレーション結果


シミュレートされた同時リクエストによる[1 秒あたりのリクエスト] フィールドが表示され、Web サーバーが 1 秒あたりのリクエスト (ユーザー) をサポートできることがわかります。接続メトリックの合計最小列と最大列を分析すると、同時リクエスト 10 件の特定のトラフィック負荷の下で、最速の応答は 371 ミリ秒で、最も遅いリクエストでは 575 ミリ秒かかったことがわかります。
ただし、トラフィックは 1 秒、2 秒、または 3 秒だけ続くのではなく、トラフィックが多い場合は数分、数時間、場合によっては数日間続く可能性があることを私たちは知っています。これをテストするためにシミュレーションを実行してみましょう。

2. タイムテスト
tマークでいつでもWebサーバーの実行を確認できます。

以下では、次のコマンドを使用して、20 秒以内に 10 人のユーザーが Web サイトに同時にアクセスすることをシミュレートします:
ab -c 10 -t 20 http://www.example.com/

注: このコマンドには n タグが含まれていませんが、このタグはデフォルトで含まれており、 t オプションを使用すると、ab はその値を 50000 に設定します。場合によっては、 t オプションを使用すると、リクエストの最大数が 50,000 に達し、その時点でシミュレーションが終了することがあります。

ab コマンドの応答は次のとおりです









www.example.com/ のベンチマーク テスト結果 (20 秒で 10 人の同時ユーザー)


このシミュレーションの結果は、 10 同時ユーザーが 20 秒以内に Web ドキュメントをリクエストすると、パフォーマンスが低下します。最も速く処理されたリクエストには 464 ミリ秒かかりましたが、最も遅いリクエストには 1890 ミリ秒かかりました。


5. ab トラップ

ab を使用する場合、いくつかの警告があります。

1. 上記で実行されたコマンドを見ると、ドメイン名の末尾にバックスラッシュがあることがわかります。このドメイン内の特定のドキュメントを要求しない場合は、このバックスラッシュが必要です。 2. ab は、Web サーバーに渡すユーザー エージェント値が原因で一部の Web サーバーによってブロックされる場合もあるため、このような場合はデータが受信されない可能性があります。この問題を回避するには、使用可能なオプション フラグ -H の 1 つを使用して、リクエストにカスタム ブラウザー ヘッダー情報を提供します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。