WordPressを運用しているサーバにAPCを入れてみました。
APCはPHPの実行コードをキャッシュすることで高速化を行う拡張モジュール。以前rep2を使っていたときに試したら目に見えて効果があったので今回も入れてみました。
テスト環境
- CentOS 5.6
- Apache 2.2.x
- PHP 5.3.x
- APC 3.1.9
インストール
インストールはpeclからさっくりと。
pecl install APC
php.iniに以下を追加。
extension=apc.so
で、Apacheを再起動して完了。phpinfo()にAPCの項目が追加されているはずです。
テスト方法
効果測定はabで行いました。下のコマンドはblogのindexを100回リクエストしかかった時間を測定というもの。
ab -n 100 -c 5 requestURL
結果
APC OFF
Time taken for tests: 18.919 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 4276100 bytes
HTML transferred: 4246900 bytes
Requests per second: 5.29 [#/sec] (mean)
Time per request: 1891.881 [ms] (mean)
Time per request: 189.188 [ms] (mean, across all concurrent requests)
Transfer rate: 220.73 [Kbytes/sec] received
APC ON
Time taken for tests: 12.359 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 4276100 bytes
HTML transferred: 4246900 bytes
Requests per second: 8.09 [#/sec] (mean)
Time per request: 1235.892 [ms] (mean)
Time per request: 123.589 [ms] (mean, across all concurrent requests)
Transfer rate: 337.88 [Kbytes/sec] received
100リクエストをさばくのに18.919秒かかっていたものが12.359秒までに短縮。1.5倍ぐらい速くなってます。
キャッシュの使用容量等の状況はパッケージのなかにあるapc.phpというファイルをサーバに設置してブラウザから確認します。ただし、apc.phpの中にパスワードを設定する箇所があるので設定しないと観られないようです。
APCはデフォルトで32MBのRAMをキャッシュ用に確保する設定になってます。今回このデフォルトの設定のままでテストを行いましたが、キャッシュ領域を90%以上をつかいきっていたので、もう少し増やしたほうがいいのかなーと思いました。