アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【ApacheDebianWindows
Apache BenchでCGIの同時接続負荷テストを行う
POSTED BY
2023-10-10

任意のマシンからサーバーCGIに対しHTTP/HTTPS通信リクエストを同時に複数出して負荷テストを行う。
一般ユーザーが同時に100人アクセスしてきたときどうなるか、をシュミレートできるので、サービスイン前には必須のテストである。

これを行うには、Apacheの付属ソフトであるabコマンドが便利である。

ab -n <総リクエスト数> -c <同時接続数> URL

たとえば、100人のユーザが同時にtest.cgiを1回アクセスしに来たをシュミレートするには、

ab -n 100 -c 100 "http://hogehoge.com/test.cgi?a=A&b=B"

などとする。

Linux環境でのインストール

Apacheがインストール済みであれば、httpdの居るbinディレクトリにabコマンドがそのまま入っているはずである。
Apacheが入っておらず、このツール群のみインストールするのであれば、以下のようにする。

apt install apache2-utils # Debian
yum install apr-util # CentOS

Windows環境でのインストール

https://www.apachefriends.org/jp/index.html

こちらから、

ダウンロード→Windows向けXAMPP を選択し、インストーラをダウンロード、実行する。

Select Components

Server→Apacheのみでよい。あとは全部チェックを外して良いが、PHPは外せないのでそのままNext。

Installation folder

C:\xampp

Language

English

Nextしていってインストール開始。インストール中Apache許可ダイアログが出るので許可する。

無事インストールが完了すると、C:\xampp\apache\binに、ab.exeコマンドが入る。どこからでも実行できるようにするなら、コントロールパネル→システムとセキュリティ→システム→システムの詳細設定→環境変数→システム環境変数→PATH→編集で、「新規」で「C:\xampp\apache\bin」を加えて、すべてOKで反映する。

コマンドプロンプトを開いて「ab」とすれば、実行できるはずである。

ベンチマーク結果の見方

結果は割と誤解を招く表現があるので注意が必要。

Complete requests:      100
Failed requests:        99
   (Connect: 0, Receive: 0, Length: 99, Exceptions: 0)

一見、99回失敗しているように見えるが、返却データが毎回変わるようなCGIページの場合Length Failedと数えられてしまう(1回前の結果と返却データ長が異なる場合)ので、そのようなCGI設計であるなら、これは気にしなくてよい。ただし、本当にエラーになっていないかはサーバー側でチェックが必要。

Non-2xx responses

HTTP 200 OK で返っていないリクエストがある。30Xリダイレクトを意図的に返しているなら良いが、そうでない場合エラーになっているので要対応。

Time taken for tests

テスト全体にかかった時間(秒)

Time per request: ... [ms] (mean)

リクエスト全体にかかった時間 ≒ テスト全体にかかった時間(ミリ秒)

Time per request: ... [ms] (mean, across all concurrent requests)

1リクエストあたりの所要時間(ミリ秒)

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】