前書き

Siegeは、WebページをリクエストすることでWebサーバーをテストするWebサイト用の設定可能なベンチマークおよびテストツールです。 Siegeが要求する1秒あたりのページ数は、1秒あたり数ページからWebサイトが処理できる最大数までの任意の値に設定できます。

この情報は、どのサーバーリソースが最初に使い果たされ、どのトラフィックレベルであるかを強調することにより、パフォーマンスのボトルネックを発見するのに非常に役立ちます。 この情報を使用して、ライブサイトに障害が発生する前に、サーバーの構成を変更したり、サーバーのハードウェアをアップグレードしたりできます。 さらに、バックアップなどの一般的なシステム管理手順をシミュレートした負荷の下でテストして、Webサイトのパフォーマンスへの影響を判断できます。

このガイドでは、ベンチマークモードとブラウジングモードで実行するようにSiegeをインストールして構成します。 ベンチマークモードは、Webサーバーが処理できる数のリクエストを行い、ブラウジングモードは、Webサイトへの構成可能な数の訪問者をシミュレートします。

Firefoxでは、プロキシサーバーを介して実行されるインターネット接続の設定が特に簡単なので、https://www.joedog.org/sproxy-home/ [Sproxy]プロキシサーバーを介してインターネットに接続するために使用します。 Sproxyは、Siegeと連動するように特別に作成されたものであり、Sproxyを通過してファイルに送信されるすべてのリクエストのURLを記録します。 このファイルを使用して、テストするURLをSiegeに伝えます。

このチュートリアルの最初の部分では、Sproxyをインストールし、Firefoxを介してインターネットに接続するようにFirefoxを構成します。 そこから、SiegeをテストするURLのリストを生成し、最後にテスト結果を調べてパフォーマンスのボトルネックを特定します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • sudo non- rootユーザーとファイアウォール。 リンクでポート「8080」を開いてください:#step-7-%E2%80%94-understanding-siege’s-results [Step 7] with the initial server setup tutorial with the command `+ sudo ufw allow 8080+ `。 これは、Sproxyがデフォルトでリッスンするポートです。

  • Firefoxがインストールされました。 ローカルコンピューターでmacOSまたはWindowsを使用している場合は、https://www.mozilla.org/ [公式Mozilla Webサイト]からインストールファイルをダウンロードする必要があります。 Linuxを使用している場合は、パッケージマネージャーを使用するか、https://support.mozilla.org/en-US/kb/install-firefox-linux [Mozillaの公式手順]に従ってFirefoxをインストールする必要があります。 このチュートリアルには、Firefoxバージョン56を使用するための手順が含まれています。

  • 所有している、またはテストする許可を持っているWebサイトは、公開されているか、Siegeをインストールするサーバーからアクセス可能にすることができます。

ステップ1-Sproxyの構築とインストール

Sproxyは事前にパッケージ化されたバイナリとして利用できないため、公式Webサイトからダウンロードしてからソースからビルドする必要があります。

Sproxyのビルドプロセスは、デフォルトではUbuntuにインストールされていないツールに依存しているため、いくつかの追加パッケージをインストールする必要があります。

まず、パッケージリストを更新して、追加の各パッケージの最新バージョンを取得するようにします。

sudo apt-get update

次に、パッケージをインストールします。

sudo apt-get install build-essential libnet-ssleay-perl liburi-perl libwww-perl

+ build-essential +`は、DebianベースのLinuxディストリビューションでソフトウェアをビルドするために必要な一般的なライブラリとツールを提供し、 `+ libnet-ssleay-perl ++ liburi-perl +、および `+ libwww-perl +`はライブラリですhttps://www.perl.org/[Perlプログラミング言語]の場合、SproxyはSSL経由の接続、URI文字列の操作、World Wide Webとのインターフェースに依存しています。

次に、ホームディレクトリに移動し、公式WebサイトからSproxyソースコードアーカイブをダウンロードします。

cd ~
curl -O http://download.joedog.org/sproxy/sproxy-latest.tar.gz

次に、 `+ sproxy +`という名前のディレクトリを作成してSproxyをビルドし、ソースディレクトリを新しいディレクトリに展開します。

mkdir sproxy
tar -zxf sproxy-latest.tar.gz --strip-components=1 --directory="sproxy"

ここで、 `+ -zxf `オプションはtarに ` gunzip `に指示し、 ` sproxy-latest.tar.gz `ファイルの内容を抽出します。 `-strip-components = 1 `オプションは、各ファイル名から最初の主要コンポーネントを取り除きます。 これはアーカイブを ` sproxy- / sproxy / `ではなく `-directory `オプションで指定された ` sproxy +`ディレクトリに解凍します。

ここで、 `+ sconfig `ディレクトリに移動して、 ` configure `および ` make +`コマンドを使用してSproxyをビルドおよびインストールします。

cd sproxy
./configure
make
sudo make install

`。/ configure +`コマンドは、必要なプログラムの依存関係とビルドツールがすべてシステムに存在することを確認します。 次に、 ` make `コマンドはプログラムバイナリをビルドします。 最後に、 ` make install `コマンドは新しいバイナリをサーバー上の正しい場所にコピーします。 Sproxyは ` / usr / local / lib / sproxy / JoeDog `に新しいディレクトリを作成するため、ルート権限で ` make install +`を実行する必要があります。

最後に、ホームディレクトリに戻り、 `+ -v +`オプションを使用して冗長モードでSproxyを起動し、Sproxyが正常に動作していることをテストします。

cd ~
sproxy -v

出力には、Sproxyがリッスンしているポート、Sproxyが出力を書き込むファイルの場所、Sproxyがリモートホストからの応答を待つ秒数が示されます。

Sproxy OutputSPROXY v1.02 listening on port 9001
...appending HTTP requests to: /user/urls.txt
...default connection timeout: 120 seconds

Sproxyの起動に失敗した場合は、端末のメッセージを確認して、何が問題だったかを確認してください。

すべてが機能していることを確認したら、 `+ CTRL + C +`でSproxyを停止します。

Sproxyを使用する準備ができたので、SiegeでベンチマークするURLのリストを作成するために、Sproxyを介してインターネットに接続するようにFirefoxを変更しましょう。

ステップ2-Sproxyを使用するためのFirefoxの構成

Firefoxのネットワーク設定を変更して、すべてのWebリクエストをSproxy経由で送信し、Siegeに必要なベンチマークターゲットのリストを生成します。

SproxyはアクセスするすべてのURLを記録するため、FirefoxのローカルWebキャッシュもクリアします。 Webキャッシュは、Firefoxが既にアクセスしたWebサイトの画像やその他の静的コンテンツのローカルストアです。 デフォルトでは、Firefoxは既にキャッシュされているWebサイト資産を再要求しません。

ネットワーク設定の変更

最初に、Firefoxのメインの* Preferences 画面の General タブで Network Proxy *設定を変更します。

  1. Firefoxを開きます。 (このチュートリアルには、* Firefoxバージョン56 *の手順が含まれています。 その他のバージョンについては、https://support.mozilla.org/en-US/kb/connection-settings-firefox [Firefoxの公式サポートドキュメント]をご覧ください。

  2. 画面の右上隅にあるハンバーガーメニューをクリックし、[設定]を選択して[一般]画面に移動します。

  3. ページの一番下までスクロールして、*ネットワークプロキシ*セクションを見つけます。

  4. [設定]ボタンをクリックして、[接続設定]パネルを開きます。

image:http://assets.digitalocean.com/articles/benchmarking-with-siege/firefox-network-proxy.png [プロキシ設定を選択するボタンを示す画像]

このパネルで、link:#step-1-%E2%80%94-building-and-installing-sproxy [ステップ1]でインストールしたSproxyサーバーを介してすべてのリクエストを渡すようにFirefoxを設定します。

  1. *手動プロキシ設定*を選択します。

  2. * HTTP Proxy *フィールドにSproxyサーバーのパブリックIPアドレスを入力します。

  3. * Port *フィールドでポート番号を「8080」に設定します。

  4. [OK]をクリックして、変更を保存します。

image:http://assets.digitalocean.com/articles/benchmarking-with-siege/firefox-connection-settings.png [データが入力されたFirefoxの接続設定パネルを示す画像]

これでFirefoxがSproxy HTTP Proxyサーバーを使用するように設定されたので、ローカルキャッシュをクリアする準備ができました。

ローカルキャッシュのクリア

Firefoxは、ローカルキャッシュを*オフラインWebコンテンツ*と呼びます。 Firefoxの[設定]画面の[プライバシーとセキュリティ]セクションにあります。

  1. 画面の右上隅にあるハンバーガーメニューをクリックし、[設定]を選択して[一般]画面に移動します。

  2. 画面の左側にある[プライバシーとセキュリティ]をクリックします。

  3. ページの一番下までスクロールし、[オフラインWebコンテンツとユーザーデータ]セクションを見つけて、[今すぐ消去]ボタンを押します。

image:http://assets.digitalocean.com/articles/benchmarking-with-siege/firefox-offline-web-content.png [キャッシュのクリアボタンを示す画像]

Webキャッシュが空になったため、Firefoxが検出したすべてのHTTPベースのWebサイト資産のアドレスは、その資産が再キャッシュされるまでSproxyに渡されます。

構成のテスト

FirefoxはすべてのHTTPベースのリクエストをSproxy経由でルーティングするように設定されましたが、リンクの最後で `+ CTRL + C +`を使用してSproxyを停止しました:#step-1-%E2%80%94-building-and-installing-sproxy [ステップ1]。 そのため、現在FirefoxでHTTP接続を介してWebサイトにアクセスしようとすると、エラーページが表示されます。

image:http://assets.digitalocean.com/articles/benchmarking-with-siege/firefox-refusing-connections.png [Firefoxエラーメッセージを示す画像]

このエラーメッセージが表示されない場合は、Firefoxの設定が前のスクリーンショットと一致していることを確認し、HTTPS経由でWebサイトに接続していないことを再確認してください。

Firefoxを通常どおり再度使用する場合は、リンクの前の手順を再度トレースします。#step-2-%E2%80%94-configuring-firefox-to-use-sproxy [Modifying the Network Settings]が、今回は、[接続設定]パネルで[プロキシなし]オプションを選択します。

Sproxyを介してインターネットに接続するようにFirefoxを構成したので、Sproxyを起動し、FirefoxでターゲットWebサイトを参照することにより、URLのリストを作成できます。

手順3-Sproxyの起動とURLリストの生成

この手順では、Sproxyサーバーを起動し、Firefoxを使用してターゲットWebサイトを閲覧します。 Sproxyは、Firefoxが後でSiegeで使用するファイルに要求するすべてのHTTPベースのURLを記録します。

まず、ホームディレクトリに移動して、Sproxyを起動します。

cd ~
sproxy -v -t 180 -p 8080 -o mixed-urls.txt
  • `+ -v +`は、端末に要求されているURLを出力します。

  • `+ -t +`は、Sproxyがリモートホストからの応答を待つ秒数です。

  • `+ -p +`はSproxyがリッスンするポートです。

  • `+ -o +`は、SproxyがURLを書き込むファイルです。

  • 「++」は、SproxyがバインドするIPアドレスです。

出力には、実行中のSproxyのバージョン、Sproxyがリッスンしているポート、SproxyがURLを書き込んでいるファイル、およびSproxyがリモートホストの応答を待つ時間を即座に通知します。 テストWebサイトの閲覧を開始すると、Sproxyが記録しているWebページのURLも出力に含まれます。

Sproxy OutputSPROXY v1.02 listening on port 8080
...appending HTTP requests to: mixed-urls.txt
...default connection timeout: 180 seconds
http:///
http:///index.html
http:///about.html

Sproxyを起動したら、Firefoxに戻り、ターゲットサイトの閲覧を開始します。 Sproxyは、FirefoxがリクエストするすべてのURLを `+ mixed-urls.txt +`ファイルに書き込み、同時に端末にURLを出力します。

テストする予定のすべてのWebページにアクセスしたら、 `+ CTRL + C +`でSproxyを停止します。

これで、テストWebサイトでFirefoxが検出したすべてのHTTPベースのURLの `+ mixed-urls.txt +`ファイルにリストが作成されました。 次の手順では、Webサイトに解決されないURLを削除して、承認済みドメインに対してのみSiegeを使用するようにします。

ステップ4-URLファイルのサニタイズ

最近のWebサイトは、多くの場合、複数の場所でコンテンツをホストしています。 このコンテンツは、コンテンツ配信ネットワーク(CDN)でホストされている画像、またはGoogleなどのサードパーティサービスでホストされているフォントです。 Siegeを実行するときは、テストする権限があるドメインのみをベンチマークするようにします。 したがって、 `+ mixed-urls.txt +`ファイル内の、ターゲットWebサイトを指していないURLをすべて削除する必要があります。

grepを使用します。これは、ユーザーに対してプレーンテキスト入力を検索するためのユーティリティです。 https://www.digitalocean.com/community/tutorials/an-introduction-to-regular-expressions [正規表現]を指定して、テストドメインとhttps://www.digitalocean.com/に一致するURLのみを検索しますcommunity / tutorials / an-introduction-to-linux-io-redirection#stream-redirection [結果のリダイレクト]を `+ urls.txt +`という名前の新しいファイルにリダイレクトします。

grep -a "^http://" mixed-urls.txt > urls.txt

`+ -a `フラグは、grepにバイナリファイルをテキストファイルのように扱うよう指示します。 これは、ブラウザーがバイナリデータを含むPOSTリクエストを行うことがあり、Sproxyがそれを ` mixed-urls.txt `に書き込むために必要です。 ` mixed-urls.txt `にバイナリデータがある場合、grepは ` -a +`フラグなしで失敗します。

正規表現の用語では、「+ ^ 」文字は、文字列が一致と見なされるには「 http:// +」で始まる必要があることを示します。

このコマンドは端末に出力を生成しませんが、 `+ urls.txt +`という新しいファイルを作成します。

次に、 `+ urls.txt +`を開いて、すべての行がテストWebサイトのドメイン名で始まることを確認し、そうでない行を削除します。

nano urls.txt

編集が完了したら、変更を保存してファイルを閉じます。

URLリストには、テストする権限があるURLのみが含まれるようになったため、Siegeをインストールする準備が整いました。 HTTPS経由でWebサイトのベンチマークも行う場合は、リンクのオプションの指示に従ってください:#step-5-%E2%80%94-creating-an-https-url-file-(optional)[Step 5] to create HTTPSバージョンのURLを含む2番目のURLファイル。

ステップ5-HTTPS URLファイルの作成(オプション)

多くのWebサイトは、HTTPとHTTPSの両方、またはHTTPSのみで実行されているため、WebサイトもHTTPSでベンチマークできることが重要です。 これはSiegeでできることです。 `+ https +`で始まるURLのリストを指定するだけです。

まず、 `+ cat `コマンドを使用して ` urls.txt `を開き、その内容をテキストの解析と変換のためのユーティリティであるsedに渡します。 sedは、「 http」のすべてのインスタンスを「+ https」に置き換え、結果をターミナルに表示します。

cat urls.txt | sed 's|http|https|'

出力は、出力された各URLが `+ https `で始まることを除いて、 ` urls.txt +`ファイルにすでにあるURLと同じリストになります。

Example Output:///
:///index.html
:///about.html

出力を確認したら、コマンドを再実行します。今回は、出力を「+ urls-https.txt +」という新しいファイルに書き込みます。

cat urls.txt | sed 's|http|https|'

このコマンドはすべて「+ urls-https.txt +」にリダイレクトされているため、端末への出力を生成しません。

更新されたURLリストができたので、Siegeをインストールしてテストを開始する準備ができました。

ステップ6-Siegeでのベンチマークとテスト

Webサイトのテストを開始する前に、まずSiegeをインストールする必要があります。

Siegeは、標準のUbuntuパッケージリポジトリから入手でき、 `+ apt-get`でインストールできます。

sudo apt-get install siege

Siegeには、インターネットとベンチマークの2つの操作モードがあります。 インターネットモードは、ターゲットWebサイトを閲覧する訪問者をシミュレートしますが、ベンチマークモードは、Webサーバーが処理できる限り迅速に要求を行います。 まず、Siegeをインターネットモードで実行します。

インターネットモードは、時間の経過とともに同時訪問者の数を増やすことにより、サーバーの負荷を徐々に増やすのに適しています。 また、このモードでは、長時間にわたる持続的な負荷を作成できます。これは、バックアップの作成などの操作中にウェブサイトのパフォーマンスに何が起こるかを調べる必要がある場合に便利です。

ホームディレクトリに移動し、Siegeをインターネットモードで起動します。 HTTPのみのアドレスに対してテストする場合は、「」を「+ urls.txt +」に置き換えます。 link:#step-5-%E2%80%94-creating-an-https-url-file-(optional)[Step 5]に従い、HTTPSアドレスに対してテストする場合は、「」を「 + urls-https.txt + `。

cd ~
siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file=""
  • `+-internet +`はSiegeをインターネットモードに設定します。

  • `+-concurrent +`はシミュレートする訪問者の数です。 この例では、
    Siegeに5人の同時ユーザーをシミュレートして、サーバーに負荷をかけずにトラフィックを生成するように指示しました。 サーバーの機能に慣れてきたら、必要に応じてこの数を増やすことができます。

  • `-time +`は、Siegeの実行時間です。 この値は、秒を表す「 S 」、分を表す「 M 」、時間を表す「 H +」で設定できます。 この例では、Siegeに30秒間実行し、サーバーに負荷をかけずにトラフィックを生成するように指示しました。 将来的には、さまざまな時間を試して、サーバーがトラフィックの持続的な負荷にどのように応答するかを確認できます。

  • `-log +`は、Siegeがテスト結果を書き込む場所へのパスです。 デフォルトでは、この場所は ` / var / log / siege.log +`であり、sudo権限が必要です。

  • `+-file +`は、Siegeがテストに使用するURLを含むファイルへのパスです。

Siegeを初めて起動すると、使用しているバージョン番号と、シミュレートしている同時ユーザーの数が報告されます。 次に、テストが開始されたことが通知されます。

Siege Output at Start of Run** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...

Siegeが実行を完了するか、 `+ CTRL + C +`で終了すると、テストの結果と結果ログファイルの場所も表示されます。

Siege Output at End of Run...
Lifting the server siege...      done.

Transactions:                    157 hits
Availability:                 100.00 %
Elapsed time:                  29.72 secs
Data transferred:               0.15 MB
Response time:                  0.49 secs
Transaction rate:               5.28 trans/sec
Throughput:                     0.01 MB/sec
Concurrency:                    2.59
Successful transactions:         161
Failed transactions:               0
Longest transaction:            0.74
Shortest transaction:           0.27

FILE: siege-internet.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

出力に含まれる統計情報は複雑なので、リンク:#step-7-%E2%80%94-understanding-siege’s-results [Step 7]で詳細に調べます。

次に、Siegeをベンチマークモードで実行して、サイトが一度に処理できるページリクエストの最大数を確認します。 これは、どの追加テクノロジーがウェブサイトのパフォーマンスを改善できるかを判断する際に役立つ情報です。 さらに、リンクでこのモードを詳しく調べるとわかるように、ベンチマークモードではリソースのボトルネックを強調できます。#step-8-%E2%80%94-identifying-performance-bottlenecks [ステップ8]。

+-internet`の代わりに +-benchmark`を使用して、今回はベンチマークモードでSiegeを再起動します。

siege --benchmark --time=30S --log="siege-benchmark.log" --file=""

出力は以前と同じ形式に従いますが、今回はモードが異なるため結果が異なることを除きます。

Siege Output** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.

Transactions:                    444 hits
Availability:                 100.00 %
Elapsed time:                  29.72 secs
Data transferred:               18.16 MB
Response time:                  0.49 secs
Transaction rate:               105.28 trans/sec
Throughput:                     4.41 MB/sec
Concurrency:                    14.14
Successful transactions:         421
Failed transactions:               0
Longest transaction:            0.74
Shortest transaction:           0.27

FILE: siege-benchmark.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

インターネットモードの統計と同様に、ベンチマークモードの統計は複雑です。 リンク:#step-7-%E2%80%94-understanding-siege’s-results [ステップ7]およびリンク:#step-8-%E2%80%94-identifying-performance-ボトルネック[8]。

Siegeを使用してサイトのテストとベンチマークを行ったので、出力をより詳細に調査し、統計を実際に使用できます。

ステップ7-Siegeの結果を理解する

Webサイトのパフォーマンスを理解し、ボトルネックを特定し、アップグレード作業をどこに集中させるかを決定することになると、Siegeは強力な資産になる可能性があります。 それが提供する統計は、ウェブサイトの全体的な健全性についての深い洞察を与えることができる幅広い指標をカバーしています。

リンクで見たように:#step-6-%E2%80%94-benchmarking-and-testing-with-siege [ステップ6]、Siegeの出力は通常次のようになります。

Siege Output at End of Run...
Transactions:                    904 hits
Availability:                  97.41 %
Elapsed time:                   4.59 secs
Data transferred:               4.37 MB
Response time:                  0.07 secs
Transaction rate:             196.95 trans/sec
Throughput:                     0.95 MB/sec
Concurrency:                   12.86
Successful transactions:         904
Failed transactions:              24
Longest transaction:            1.95
Shortest transaction:           0.00
...

具体的には、これらのメトリックは以下を意味します。

  • `+ Transactions +`は、Siegeが行ったリクエストの総数です。

  • `+ Availability +`は、https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-http-error-codes#400-bad-を含む、Webサーバーが応答したリクエストの割合です。 request [4xxおよび5xxレベルのHTTPエラーコード]。

  • 「+経過時間」は、テストの実行時間です。

  • 「+ Data transfer +」は、Siegeがサイトのテストに使用した帯域幅の合計量です。

  • 「応答時間」は、Webサーバーがリクエストに応答するのにかかった平均時間です。

  • `+ Transaction rate +`は、Webサーバーが処理した1秒あたりの平均トランザクション数です。

  • `+ Throughput +`は、Webサーバーが提供した1秒あたりのデータ量です。

  • `+ Concurrency +`は、開いている同時接続の平均数です。

  • 「成功したトランザクション」は、https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-http-error-codes [HTTPステータスコード]で応答されたトランザクションの総数です。 400未満。

  • 「+ Failed transaction +」は、HTTPステータスコードhttps://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-http-error-codes#400-badで応答されたトランザクションの総数です。 -request [400を超える]。

  • 「最長トランザクション」は、最長リクエストが完了するまでにかかった時間です。

  • 「最短トランザクション」は、最短のリクエストが完了するまでにかかった時間です。

「トランザクション率」と「失敗したトランザクション」は、Webサーバーの全体的な健全性の最も迅速なリトマス試験を提供します。

`+ Transaction rate +`はWebサーバーの1秒あたりのページ数であるため、Webサイトの速度を表します。 この数値が大きいほど、Webサイトで処理できる訪問者が多くなり、訪問者が各ページをより速く受け取ることができます。 Siegeを使用してWebサイトの一般的な応答性を改善している場合、これを増やしたい数値です。

「+ Failed transaction 」値は、「 503 Service Unavailable +」などのエラーコードを含むWebサーバーからの応答を指します。 これらのエラーは、多くの場合、受信している要求の数を処理できないデータベースや、RAMを使い果たしたWebサーバーなどの問題を示しています。 この数がゼロ以外の場合は、ウェブサーバーのログファイルを調べて、発生したエラーを正確に確認し、問題の解決方法に関する指示を得る必要があります。

時間が経つにつれて「+ Transaction rate 」を増やし、「 Failed transaction +」を減らすように変更する場合、Siegeを実行するたびに作成するログファイルを参照することも忘れないでください。端末とテストの日時。 これは、努力の全体的な軌跡を追跡するのに役立ちます。

Siegeの出力を調べてWebサーバーの速度と堅牢性を判断したので、この同じ情報を使用してパフォーマンスのボトルネックを特定および削除する方法を確認します。

ステップ8-パフォーマンスのボトルネックを特定する

ベンチマークモードでは、SiegeはWebサーバーが処理できる1秒あたりのリクエスト数を毎秒行います。 サーバーが処理できるページの最大数に達すると、_resource limit_に達しました。

影響を受ける可能性が最も高い4つのリソースは次のとおりです。

  1. RAM

  2. CPU

  3. Disk

  4. ネットワーク帯域幅

ベンチマークモードを最大限に活用するには、Siegeと同時にいくつかの追加ツールを実行する必要があります。これにより、Siegeがテスト負荷を増やしたときにシステム全体で何が起こるかを監視できます。

システムリソースの動的なリアルタイムビューを提供するツールであるtopを使用して、最初の3つのリソース(RAM、CPU、およびディスク使用量)を監視できます。

Ubuntuにはデフォルトでtopが付属しているため、インストールする必要はありません。 コマンド「+ top +」を実行するだけです。

上部に表示される情報は、2つのセクションに分かれています。

Sample top Outputtop - 21:02:32 up 50 min,  1 user,  load average: 0.07, 0.02, 0.00
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
 0.0 ni, 99.3 id,  8.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   1015200 total,    63536 free,    431456 used,   520208 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   512308 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

出力の最初の5行で構成される上部セクションには、現在のシステム使用状況の概要が表示されます。

下のセクションには、システムで現在実行されている個々のサーバープロセスのリストと、各プロセスの識別番号、所有者、優先度、nice値、仮想メモリ使用、物理メモリ使用、共有メモリ使用、ステータス、CPU使用率、メモリ使用率、アクティビティの合計時間、および名前。

topはhttps://www.digitalocean.com/community/tutorials/how-to-use-ps-kill-and-nice-to-manage-processes-in-linux [プロセスの管理]およびhttpsに役立つツールですが、 ://www.digitalocean.com/community/tutorials/how-to-monitor-cpu-use-on-digitalocean-droplets#monitoring-the-cpu [CPU使用率の監視]、この場合、どのようなものかを見たいSiegeベンチマークテストの強要の下で私たちのシステムについて教えてください。

CPU使用率は、「%Cpu(s):37.3 us、7.3 sy、」と読み取ります。 これらの値は、ユーザープロセスがCPUの37.3%を消費し、システムプロセスが7.3%を消費していることを示しています。 これら2つの値を一緒に追加すると、合計CPU使用率が取得されます。

サーバーが100%のCPU使用率で実行されている場合、プロセスのリストの一番上のエントリをチェックして、1つ以上が異常に大量のCPUを消費しているかどうかを確認します。 その場合、使用するCPUが少なくなるようにプロセスを再構成または微調整することを検討してください。 それが不可能な場合は、サーバーのCPUをアップグレードする必要があります。

それでは、メモリ使用量を調べてみましょう。

Sample top Outputtop - 21:02:32 up 51 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :       223.914 free,    395.621 used,   371.871 buff/cache
MiB Swap:        0.000 total,        0.000 free,        0.000 used.

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

デフォルトでは、RAMの使用量は4行目にキロバイト単位で表示されます。 上記の出力例では、すでに「+ SHIFT + E 」を一度押して、値をメガバイトに変換して、数字を操作しやすくしています。 値をギガバイトに変換するには、もう一度「 SHIFT + E 」を押し、さらに「 SHIFT + E +」を押してデフォルトのキロバイト表示に戻ります。

「+ total +」の値は、サーバーで使用可能なメモリの合計量です。 カーネルはブート時にメモリを予約するため、1024 MBのマシンではここに991 MBのメモリが表示されることに注意してください。

`+ avail Mem +`はシステムの残りのメモリの量を示します。 この数値は、使用されるRAMが増えると小さくなり、サーバーにメモリが残っていない場合は最終的にゼロになります。

CPU使用率と同様に、「+ avail Mem +」がゼロまたはその近くで実行されている場合、異常に大量のメモリを消費するエントリのプロセスのリストを調べます。 可能であれば、これらのプロセスを再構成または微調整して、使用するメモリを減らすか、サーバーのRAMの量をアップグレードしてください。

最後に、ディスクの使用状況を見てみましょう。

Sample top Outputtop - 21:02:32 up 52 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,    0.0 hi,  0.0 si,  0.0 st
KiB Mem :   1015200 total,    63536 free,    431456 used,   520208 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   512308 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

関心のあるディスクの使用量であるI / O待機は、使用可能なディスク領域の量ではなく、サーバーの速度を低下させるディスクアクセスの量です。 ディスクアクセスは、特に回転するプラッタハードディスクを使用するサーバーでは非常に遅く、サーバーがディスクにアクセスするたびに、CPUは情報が取得されるまで待機する必要があります。

Topは、この情報を「+ wa +」値として報告します。 CPUがディスクからのデータを待機してアイドル状態になっている時間の割合を示します。 この数値は、可能な限り0.0に近づける必要があります。

上記の例では、「+ wa 」の値は「+31.6」です。 これは、CPUがディスクからのデータを待機する時間の3分の1を費やしていることを意味します。 これは長い時間であり、ウェブサイトのパフォーマンスに深刻な影響を及ぼします。

I / O待機は、多くの場合、ファイルのためにディスクにアクセスするか、ローカルデータベースを繰り返し呼び出した結果です。 「+ wa +」が0.0をはるかに超える場合は、静的リソースをコンテンツ配信ネットワーク(CDN)などのリモートロケーションに移動することを検討するか、アプリケーションが関連するローカルデータベースにアクセスする回数を減らす方法を調査します。

topを終了するには、「+ Q +」を押します。

最後に確認するリソースは、ネットワークの使用です。 これを監視するには、Bandwidth Monitor New Generationツールを使用します。

このツールを + apt-get`でインストールし、コマンド + bmw-ng + `で実行します。

sudo apt-get install bwm-ng
bwm-ng

出力の上部には、Bandwidth Monitor New Generationのバージョン番号、データが更新される頻度(デフォルトでは0.5秒ごと)、使用可能なネットワークインターフェースの決定に使用される入力ソース( + / proc / net / dev +`が表示されますLinuxではデフォルトで)、表示される統計(デフォルトではデータ使用量 `+ rate +)。

出力の下部には、ネットワークインターフェイスごとの着信データ( + Rx +)、発信データ( + Tx +)、および合計データ( + Total +)の量を報告するテーブルが含まれています。

最後の行には、すべてのネットワークインターフェイスの合計値が表示されます。

Sample bwm-ng Output  bwm-ng v0.6.1 (probing every 0.500s), press 'h' for help
 input: /proc/net/dev type: rate
 -         iface                   Rx                   Tx                Total
 ==============================================================================
              lo:           0.00 KB/s            0.00 KB/s            0.00 KB/s
            eth0:          30.99 KB/s          499.11 KB/s          530.11 KB/s
 ------------------------------------------------------------------------------
           total:          30.99 KB/s          499.11 KB/s          530.11 KB/s

ネットワーク帯域幅がボトルネックを引き起こすのは、通常、「+ Tx 」が限界に達しているためです。 この問題を解決するには、ホスティングプロバイダーからサーバーの接続速度を取得し、「 bwm-ng 」で表示される速度と比較します。 ` bwm-ng +`で表示される速度がサーバーで利用可能な最大帯域幅で常に、またはそれに近い場合は、ホスティングプランをアップグレードするか、完全に別のプロバイダーに移行することを検討する必要があります。

テストが完了したら、 `+ CTRL + C +`を押してBandwidth Monitor New Generationを終了します。

結論

このガイドでは、SiegeベンチマークツールとSproxyプロキシサーバーを使用して、Webサーバーで構成可能な負荷を生成し、最大スループットにプッシュしました。 これらのツールは、パフォーマンスの問題を特定し、十分な情報に基づいたアップグレードを計画するのに役立つため、Webサイトの展開に非常に役立ちます。

ディスクI / Oとメモリのボトルネックを減らす別の方法については、https://varnish-cache.org/ [Varnish HTTP Cache]をご覧ください。 Varnishは、静的なWebサイト資産を保存する使いやすいリバースプロキシで、RAM使用量とディスクI / Oの両方を削減します。

WebサイトでPHPを使用している場合は、標準のPHP実装の代替手段としてhttps://php-fpm.org/[PHP-FPM]をインストールすることを検討してください。 PHP-FPMは、PHPベースのWebページを提供するためのCPU要件を削減するため、Webサイト全体の速度が向上します。