eAcceleratorによるPHP高速化の効果

wordpressなどのPHPを使ったアプリケーションを高速化するために、PHPの中間コードをキャッシュするアクセレータを導入したのですが、その効果がどのくらいあるのかを調べて見ました。性能測定をするために、Apache付属のベンチマークツールを使用しeAccelerator導入前後で性能比較をしてみました。

abについて

abは、Apache Benchmarkの略のようでApacheに付属しているようです。インストールされている場所は、Debianでは、「/usr/sbin/ab」手動でインストールした場合には、「(インストールディレクトリ)/bin/ab」です。実行するには、次の例のようにします。

同時接続数:10、総リクエスト数:100でリクエストするURLが「http://www.hoge.com/apache2/entry-001.html」の場合

ab -n 100 -c 10 http://www.hoge.com/apache2/entry-001.html

さらに、プロキシサーバ:proxy、プロキシポート:8080を経由する場合

ab -n 100 -c 10 -X proxy:8080 http://www.hoge.com/apache2/entry-001.html

ユーザ名が「user001」、パスワードが「hogehoge」でベーシック認証が必要なページにアクセスする場合

ab -n 100 -c 10 -A user001:hogehoge http://www.hoge.com/apache2/entry-001.html

結果の見方については、次のとおりです。主な評価項目の内容です。

Document Path
リクエストしたページ。
Document Length
アクセスしたファイルの容量。
Concurrency Level
同時接続数。ad実行時のオプション「-c」で指定した数値。
Time taken for tests
すべてのリクエストが完了するのにかかった時間。
Complete requests
すべてのリクエスト数。ad実行時のオプション「-n」で指定した数値。
Failed requests
処理できなかったリクエスト数。
Requests per second
1秒当たりに処理されたリクエスト数。
Time per request
1アクセスあたりの処理にかかった時間。(アクセスは、リクエスト数/同時接続数より算出。)
Time per request(across all concurrent requests)
1リクエストあたりの処理にかかった時間。
Transfer rate
1秒当たりの転送容量。転送速度。
Connection Times
Connect(接続時間)、Processing(処理時間)、Waiting(待機時間)、Total(合計時間)についての最大値、平均値、標準偏差、中間値、最大値を表す。
Percentage of the requests served within a certain time
右側に表示された時間内に処理されたリクエストの割合。「75% 3000」は、75%のリクエストが3000ms以内に処理されたことを表す。

これらの評価項目で重要なのは、「Failed requests」と「Requests per second」です。「Failed requests」は、処理が出来なかったリクエスト数を表します。この項目が「0」でない場合には、abで指定した同時接続数が、Webサーバの処理能力を超えてしまっているので、正確な性能測定が出来ません。従って、同時接続数を減らしabを再実行する必要があります。

「Requests per second」は、1秒当たりに処理できるリクエスト数を表します。この項目は、ベンチマークで一番重要な項目で、この値が大きくなれば、性能が向上していると考えられます。

Apache Benchmarkの測定結果

まずは、「eAccelerator」導入前の結果です。

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.uetyi.mydns.jp (be patient).....done


Server Software:        Apache/2.2.3
Server Hostname:        www.uetyi.mydns.jp
Server Port:            80

Document Path:          /wordpress/linux-server/entry-437.html
Document Length:        37179 bytes

Concurrency Level:      5
Time taken for tests:   71.10280 seconds
Complete requests:      10
Failed requests:        0
Write errors:           0
Total transferred:      374640 bytes
HTML transferred:       371790 bytes
Requests per second:    0.14 [#/sec] (mean)
Time per request:       35505.137 [ms] (mean)
Time per request:       7101.027 [ms] (mean, across all concurrent requests)
Transfer rate:          5.14 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   44  64.3      2     155
Processing: 19401 34152 9513.1  33788   51451
Waiting:    18185 28808 7736.7  28212   44878
Total:      19401 34196 9568.8  33856   51606

Percentage of the requests served within a certain time (ms)
  50%  33856
  66%  35995
  75%  39933
  80%  45424
  90%  51606
  95%  51606
  98%  51606
  99%  51606
 100%  51606 (longest request)

「eAccelerator」導入後の結果です。

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.uetyi.mydns.jp (be patient).....done


Server Software:        Apache/2.2.3
Server Hostname:        www.uetyi.mydns.jp
Server Port:            80

Document Path:          /wordpress/linux-server/entry-437.html
Document Length:        37179 bytes

Concurrency Level:      5
Time taken for tests:   40.867886 seconds
Complete requests:      10
Failed requests:        0
Write errors:           0
Total transferred:      374640 bytes
HTML transferred:       371790 bytes
Requests per second:    0.24 [#/sec] (mean)
Time per request:       20433.941 [ms] (mean)
Time per request:       4086.789 [ms] (mean, across all concurrent requests)
Transfer rate:          8.93 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  963 1517.4      1    4412
Processing: 12819 19190 4526.1  20714   26246
Waiting:     7744 12406 2890.7  13384   16355
Total:      12819 20153 5086.2  21341   27999

Percentage of the requests served within a certain time (ms)
  50%  21341
  66%  22447
  75%  24138
  80%  26247
  90%  27999
  95%  27999
  98%  27999
  99%  27999
 100%  27999 (longest request)
評価項目 「eAccelerator」導入前 「eAccelerator」導入後
Time taken for tests 71.10280 seconds 40.867886 seconds
Requests per second 0.14 [#/sec] (mean) 0.24 [#/sec] (mean)
Time per request 35505.137 [ms] (mean) 20433.941 [ms] (mean)

それぞれの評価項目を見比べると明らかに導入の効果が見られます。特に、「Connection Times」の「Processing」に改善が見られることから、やはりキャッシュの効果が大きく処理速度が向上したようです。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする