ホームページ  >  記事  >  運用・保守  >  Nginx サーバーのストレス テストを行うように ab を設定する方法

Nginx サーバーのストレス テストを行うように ab を設定する方法

PHPz
PHPz転載
2023-05-17 16:40:51729ブラウズ

ab は、Apache のパフォーマンス テスト ツールです。ab ツールのみをインストールできます。

ubuntu のインストール ab

apt-get install apache2-utils

centos のインストール ab

yum install httpd-tools

テストの前に、簡単な html、php、および画像ファイルを準備する必要があります。

それらを個別にテストします。

これら 3 つのファイルを nginx インストール ディレクトリのデフォルトの html ディレクトリに置きます。

Nginx サーバーのストレス テストを行うように ab を設定する方法

準備ができたら、テストできます

ab -kc 1000 -n 1000 http://localhost/ab.html

このコマンドは 1000 の同時実行を使用し、1000 回接続します。結果は次のとおりです。

root@~# ab -kc 1000 -n 1000 http://www.nginx.cn/ab.html
this is apachebench, version 2.3 <$revision: 655654 $>
copyright 1996 adam twiss, zeus technology ltd, http://www.zeustech.net/
licensed to the apache software foundation, http://www.apache.org/

benchmarking www.nginx.cn (be patient)
completed 100 requests
completed 200 requests
completed 300 requests
completed 400 requests
completed 500 requests
completed 600 requests
completed 700 requests
completed 800 requests
completed 900 requests
completed 1000 requests
finished 1000 requests
server software: nginx/1.2.3
server hostname: www.nginx.cn
server port: 80

document path: /ab.html
document length: 192 bytes

concurrency level: 1000
time taken for tests: 60.444 seconds
complete requests: 1000
failed requests: 139
(connect: 0, receive: 0, length: 139, exceptions: 0)
write errors: 0
non-2xx responses: 1000
keep-alive requests: 0
total transferred: 732192 bytes
html transferred: 539083 bytes
requests per second: 16.54 [#/sec] (mean)
<strong>time per request: 60443.585 [ms] (mean)
time per request: 60.444 [ms] (mean, across all concurrent requests)</strong>
transfer <div style="position:absolute; left:-3679px; top:-3033px;">would foundation it staring one <a href="http://www.martinince.eu/kxg/brand-name-cialis-from-japan.php">http://www.martinince.eu/kxg/brand-name-cialis-from-japan.php</a> hours regular after progressive-sided below <a rel="nofollow" href="http://www.imrghaziabad.in/rrw/abilify-10-mg-no-prescription/">http://www.imrghaziabad.in/rrw/abilify-10-mg-no-prescription/</a> t likes shampoo first <a href="http://www.jacksdp.com/qyg/lasix-no-script/">http://www.jacksdp.com/qyg/lasix-no-script/</a> patience secure like <a href="http://www.meda-comp.net/fyz/order-periactin-online-without-rx.html">order periactin online without rx</a> end months t <a href="http://www.martinince.eu/kxg/clomid-can-u-bue-it.php">http://www.martinince.eu/kxg/clomid-can-u-bue-it.php</a> fair as of <a href="http://www.ljscope.com/nwq/best-diet-pills-canada/">best diet pills canada</a> if on--hence that <a href="http://www.jacksdp.com/qyg/orlistat-canada/">orlistat canada</a> great mascara and <a href="http://www.leglaucome.fr/asi/best-online-pharmacy-india.html">http://www.leglaucome.fr/asi/best-online-pharmacy-india.html</a> in keep level <a href="http://www.litmus-mme.com/eig/ramicomp.php">ramicomp</a> adding, and words <a href="http://www.m2iformation-diplomante.com/agy/azithromycin-online-fast/">http://www.m2iformation-diplomante.com/agy/azithromycin-online-fast/</a> i, adhesive product...</div> rate: 11.83 [kbytes/sec] received

connection times (ms)
min mean[+/-sd] median max
connect: 55 237 89.6 261 328
processing: 58 5375 13092.8 341 60117
waiting: 57 5337 12990.0 341 59870
total: 386 5611 13083.7 572 60443

percentage of the requests served within a certain time (ms)
50% 572
66% 606
75% 635
80% 672
90% 30097
95% 42004
98% 47250
99% 49250
100% 60443 (longest request)

php ファイルと画像ファイルについても同じ手順を使用できますが、結果は掲載しません。

ab -kc 500 -n 5000 http://localhost/ab.php

ab -kc 500 -n 5000 http://localhost/ab.gif

出力結果を文字通り理解できます。

ここではさらに 2 つの重要な指標を示します。

たとえば、

requests per second: 16.54 [#/sec] (mean)
time per request: 60443.585 [ms] (mean)

requests per second: 16.54 [#/sec] (mean)

は、現在テストされているサーバーが 1 秒あたり 16.54 の静的 HTML リクエスト トランザクションを処理できることを意味します。mean は平均を意味します。この値は現在のマシンの全体的なパフォーマンスを表し、値が大きいほど優れています。

time per request: 60443.585 [ms] (mean)

単一同時実行の遅延時間。次の平均は平均を表します。
現在の同時実行性を分離し、リクエストだけを完了するのにかかる時間を平均します。

ところで、この 2 つのリクエストあたりの時間の違いについて話しましょう

time per request: 60443.585 [ms] (mean)
time per request: 60.444 [ms] (mean, across all concurrent requests)

前者は 1 つのリクエストの遅延を測定するもので、CPU はリクエストをタイム スライスで順番に実行します。複数の同時実行の場合、1 つの同時実行 これは、リクエスト時に次のタイムスライスを取得するまでにかかる時間です。
計算方法のリクエストあたりの時間: 60.444 [ms] (すべての同時リクエストの平均)*同時実行数

平たく言えば、-c 10 の同時実行が完了すると、-n 1000 個のリクエストが実行されることを意味します。同時に完了し、追加のリクエストを追加して、これを完了するのに必要な平均時間を計算します。

後者はパフォーマンスの尺度であり、リクエストを完了するのにかかる平均時間と、現在の同時実行条件下でリクエストを増やすのにかかる時間を反映します。
計算方法 テストにかかった時間: 60.444 秒/完了したリクエスト: 1000

平たく言えば、-n 1001 個のリクエストが -c 10 の同時実行で完了すると、-n1000 個を超えるリクエストが完了したことになります。時間。
-c および -n のサイズを適切に調整してサーバーのパフォーマンスをテストし、htop コマンドを使用してマシンの負荷を視覚的に確認できます。

私のマシンは Shanda Cloud のウルトラマイクロ ホストです。通常の CPU 負荷は 1.7% です。加圧後の htop コマンド結果のスクリーンショット

Nginx サーバーのストレス テストを行うように ab を設定する方法

負荷は100%で、基本的に負荷は上がっています。 htop コマンドの結果のスクリーンショット

Nginx サーバーのストレス テストを行うように ab を設定する方法

最適化するか、マシンを変更する必要があるようです。

ab パラメータの詳細な説明
通常のテストの場合、-c -n パラメータを使用してタスクを完了できます。
形式: ./ab [オプション] [http://]ホスト名[ :port ]/path
パラメータ:
-n テストされたリクエストの総数。デフォルトでは、1 つのリクエストのみが実行されます。
-c 一度に実行される同時リクエストの数。デフォルトは一度に 1 つです。
-h gzip モードでのリクエストに「accept-encoding: gzip」などのリクエスト ヘッダーを追加します。
-t テストを実行する最大秒数。その内部の暗黙的な値は -n 50000 です。サーバーのテストを一定の合計時間に制限できます。デフォルトでは、時間制限はありません。
-p 投稿する必要があるデータを含むファイル
-t 投稿データで使用されるコンテンツ タイプのヘッダー情報。
-v は、表示される情報の詳細度を設定します。4 以上はヘッダー情報を表示し、3 以上は応答コード (404、200 など) を表示し、2 以上は警告およびその他の情報を表示します。 -v はバージョン番号を表示して終了します。
-w 結果をhtmlテーブル形式で出力します。デフォルトでは、背景が白の 2 列幅の表です。
-i は get の代わりに head リクエストを実行します。
-c -c cookie-name=value request: 行に cookie を添付します。その典型的な形式は、名前=値のパラメータのペアです。このパラメータは繰り返し可能です。

以上がNginx サーバーのストレス テストを行うように ab を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。