2021-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リクエストあたりの所要時間(ミリ秒)


※本記事内容の無断転載を禁じます。

気になるそばかすに!薬用クリーム【フレキュレル】

【ダスキン】定期おそうじサービス無料お見積り

金・プラチナ・宝石等の宝飾品専門買取【リファスタ】

30万点以上のファッションアイテムを取り扱う!古着通販【ベクトルパーク】

パーフェクトキット

24時間365日対応中!フィギュア・模型・コレクターズアイテムの出張買取!一切の手間が掛かりません!

「たった1粒で糖質なかったことに!」【ザ糖質プレミアムダイエット】

大人可愛い私だけのスタイル!韓国アナウンサーご愛用ブランド『styleonme』

たった一回で白い歯!東京、表参道のホワイトニング専門歯科【ホワイトマイスター】

window.etereum.requestに渡すdataフィールドをABIエンコードで作成する
【Solidity】Remix IDEを使用してサーバー不要のコントラクト開発&デバッグ【Ethereum】
【Windows】Googleフォトからダウンロードした動画が音声のみで映像が再生されない場合
PostgreSQLをソースコードからインストールしてsystemdのサービスとして動かす
【Linux】mkfsコマンドでProceed anyway?と確認を求められるのを回避する
【Apache】www.のついたアクセスをすべてwww無しにリダイレクトする.htaccess設定
【Apache】www.なしのアクセスをすべてwww.へリダイレクトする.htaccess設定
【Apache】httpアクセスをすべてhttpsへリダイレクトする.htaccess設定
【Windows】MiniTool Partition Wizardで削除できないパーティションを消す&削除したファイルを復旧する
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
5chブラウザJane Styleの板一覧にゲーム板等が表示されない場合
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
LinuxからWindowsの共有フォルダをマウントする
【Linux共通】プロキシサーバーの利用設定
【Anaconda3】指定した仮想環境でJupyter Notebookを動かす