●1秒間で最大いくつのリクエストに耐えられるか測定する
% ab -c 50 -n 500 "http://example.com/" -c : 同時接続数 -n : リクエスト数
●「Requests per second」に注目
Requests per second: 9.00 [#/sec] (mean) 1秒間で平均 9リクエスト 受け付けたことを意味する
●「Time per request」に注目
Time per request: 100.373 [ms] (mean) 1リクエストあたり平均 100.373ミリ秒 で処理したことを意味する
●測定中に正しいレスポンスを返していたかも確認する
Document Length: 5570 bytes Complete requests: 500 Failed requests: 0 Non-2xx responses: 0
webサーバに負荷をかけた状態で自分のブラウザからサイトにアクセスしてみて、応答速度、描画速度を体感してみる。
以下のようなシェルスクリプト「abloop.sh」を実行させた状態でブラウザからアクセスしてみる。
abloop.sh
#!/bin/sh i=1 while [ $i -le $3 ] do echo ab -c $1 -n $2 "$4" & sleep 1 i=`expr $i + 1` done
コマンドラインから「abloop.sh」を実行
% ./abloop.sh 50 5 100 http://example.com 第一引数:同時接続数 第二引数:リクエスト数 第三引数:ループ回数 第四引数:アクセスURL
信頼性のある測定値を得たければ、abでリクエストを投げるサーバと性能を測定するサーバは別々にわける。
同一サーバで両方の仕事(リクエストとレスポンス)をこなしてしまうと、測定結果の信頼性は大幅にダウンします。
また、できれば各サーバを配置するネットワークも別々にすべき。
同一のセグメント内だったり、同一のローカルエリア内では、やはり信頼性の低い測定結果になってしまう。