Linuxサーバより愛を込めて。

Linux(Ubuntu)サーバとダーツを愛する中年サラリーマンの日記。

Linuxサーバ

Apache BenchでWEBサーバの負荷テスト

Apache Benchとは

Apach BenchはApache HTTP Serverに同梱されているベンチマークソフトです。

  • 同時接続数
  • リクエスト数
  • サーバ名

を指定することでWEBサーバに意図的に負荷を発生させ、その処理結果を以ってサーバの処理能力を測定することができます。

 

アクセス数が少ないうちはサーバの処理能力が問題になることは少ないと思われますが、いざ何かの拍子に大量のアクセスが発生した際にサーバがダウンした!なんてことがないように自分のサーバの処理能力を知っておくのも大事なのではないかと思います。

 

Apache Benchの使用法

コマンドラインからこのテストを行う際の基本的な文法は

 

ab [-オプション] サーバのURL

 

となります。たとえば、10の同時接続で100件のリクエストを発生させるテストを行うとすると

 

ab -n 100 -c 10 http://example.com/

 

と入力することで可能となります。ちなみにその他のオプションとして

  • -t 数値・・・サーバからのレスポンスの待ち時間を数値(秒)で指定
  • -p ファイル名・・・サーバへ送信するファイルがある場合に指定
  • -t コンテンツタイプ・・・サーバへ送信するコンテンツヘッダを指定
  • -v 数値・・・指定された数値に該当する動作情報を表示
  • -c 'cookie名称=値'・・・cookie値を渡してテストを実行
  • -k HTTP1.1のkeep aliveを有効にしてテスト

などなど、様々なものがあります。それでは当サーバにてテストを行ってみることにします。

 

abにてテストを行ってみる

早速コマンドラインにて以下のように入力してみます。(お使いの環境に併せてサーバ名を変更してください)

 

ab -n 500 -c 50 http://chee-s.net/

 

○○○○@Homesvr01:~# ab -n 500 -c 50 http://chee-s.net/
This is ApacheBench, Version ○.○ <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking chee-s.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests
Server Software: Apacheのバージョン
Server Hostname: chee-s.net
Server Port: 80

Document Path: /
Document Length: 526 bytes

Concurrency Level: 50
Time taken for tests: 1.702 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Non-2xx responses: 500
Total transferred: 350500 bytes
HTML transferred: 263000 bytes
Requests per second: 293.69 [#/sec] (mean)
Time per request: 170.246 [ms] (mean)
Time per request: 3.405 [ms] (mean, across all concurrent requests)
Transfer rate: 201.05 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.7 1 4
Processing: 12 162 27.7 171 177
Waiting: 12 162 27.7 171 177
Total: 14 163 27.3 172 182

Percentage of the requests served within a certain time (ms)
50% 172
66% 172
75% 172
80% 172
90% 174
95% 174
98% 174
99% 174
100% 182 (longest request)

 

なにやらズラズラと結果が表示されていますがどう見たらよいのでしょうか?(**)

 

Apache Benchの結果とポイント

もちろん全て理解するのが一番良いのでしょうが、まずは注意すべきポイントを絞って覚えてしまいます。全部を覚えられるほど記憶力に自身があるわけではありませんので・・・

 

Failed requests

NGリクエストの件数を表します。これが発生するということはサーバの処理能力を超えたリクエストが発生したと考えてよいでしょう。サーバのチューニングやマシンの機能向上などが必要かもしれません。幸い今回ぐらいの負荷であれば我がサーバは処理できそうな気配です。

 

Requests per second

1秒間に処理できるリクエストの数を表します。もちろんこの値が大きい方が処理能力も高いといえるでしょう。他所様のテスト結果と見比べると若干数値が劣るように見えました。。。

 

Connection Times Connect/Processing/Waiting

リクエストに対する処理に要する時間の内訳が表示されます。(接続/処理/待ち時間ぐらいなかんじ)

 

他にも色んな項目がありますが、簡単な英語なのでなんとなく理解できるかな?という程度です。

 

ほんとはもう少し大きな負荷をかけてみたいのですが(同時接続100で1000件のリクエストとか)、試したらエラーが出てしまったので今度はその辺りの原因と対策を調べてみることにします。

-Linuxサーバ
-, ,