WEB サイトの性能比較
Apache Bench を使ってWEBサイトの性能比較を行ってみました。
方法
ローカルのMac OS のターミナルからウエブサーバーに対して、Apache Bench で接続性能のテストを行う。
% ab -n <Total発行リクエスト数> -c <同時接続数> <URL>
1接続あたり1リクエストで同時接続が100の場合は、
% ab -n 100 -c 100 <URL>
というように書きます。
このサイトの評価
FreeBSD サーバー
ハードウエアは化石のようなスペック
CPU: Intel(R) Pentium(R) CPU G4560 @ 3.50GHz (3504.17-MHz K8-class CPU)
2 core(s) x 2 hardware threads
real memory = 17179869184 (16384 MB)
<WDC WD40EFAX-68JH4N1 83.00A83> ACS-3 ATA SATA 3.x device
Nginx Fast-CGI 有効の他、Web Serverとしてチューニング済み
古いハードウエアなので、応答性は現代のPCの性能に全く歯が立ちません。
サーバーには、キャッシュ等のチューニングを行っているので、たくさんのアクセスがあった場合は、待ち時間が少なくなるので、性能の劣化は少ない。

ページはキャッシュされているので、CPUの使用率は高くならない。
1000アクセスを処理するのに約4秒程度。
実験中のUbuntu LEMP キャッシュなし
ミニPC
AMD Ryzen7 3750H CPUコア 4 スレッド 8
メモリー DDR4 2400MHz NVMe M.2 SSD 使用
Nginx Fast-CGI 無効
ハードウエアの性能が高いので、応答性能は高い。
キャッシュの設定がされていないので、同時アクセスの場合、待ち時間が発生して、どんどん遅くなると考えます。

同時 100 アクセスすると CPU の使用率は高い。
1000アクセスを処理するのに約13.7秒程度を要する。
実行結果の見方
リクエストは全部正常に処理されたか?
Complete requests/Failed requests
完了したリクエストと失敗したリクエストの数を表示します。失敗したリクエストについては、理由の内訳(Connect, Receive, Length, Exceptions)が表示されますので、確認します。
失敗するリクエストが見られるときは、同時接続数の設定を見直します。また、動的に生成するページにアクセスしているときは、アプリケーションでページ生成系のエラーが出ていないか、ログを確認します。
秒間どれくらいのリクエストを捌けるのか?
Requests per second
1秒間に処理したリクエスト数の平均値(ミリ秒)です。
性能テストを実施するときは、この値が目標値の範囲に収まっているかを確認します。
パフォーマンス確認
Time per request(mean, across all concurrent requests)
1リクエストあたりの処理時間を確認します
コネクション時間
Connection Times
リクエストに要した時間(ミリ秒)の内訳です。Connect, Processing, Waitingの最小値、最大値、平均値と標準偏差、中央値を示します。
Connect: 接続確立までにかかった時間です
Waiting: 接続確立からクライアントがレスポンスを受け取るまでにかかった時間です。
Processing: 対象サーバ側での処理時間です。アプリケーションで行う処理が複雑なときは、この値が大きくなる傾向があります
何リクエストまで耐えられるのか?
オプション -n -cを増していき、Failed requestsが0でなくなるのが限界点となります。