xCache を使ってみる(Windows版でも使えるアクセラレーター) | PHP Walker

xCache を使ってみる(Windows版でも使えるアクセラレーター)

PHPでのWebシステム運用で必須ともいえるアクセラレーターですが。(そもそもPHPアクセラレーターって何よッ!?って方はコチラ の記事が参考になると思われます)

有名どころでは、 APCeAccelerator がありますが、Windows版のPHPへの対応状況があまりよろしくないようです。
そこで色々と探したところ xCache がWindows版のPHP5.3にも対応しており、Windows + Apche + PHP5.3 なんて要件にも対応できるステキ・モジュールでした。



まずはダウンロード

まずはxCacheのサイトからWindows用にコンパイルされた最新版のモジュールをダウンロードしてきます。

ダウンロードは、、、
http://xcache.lighttpd.net/pub/Releases/1.3.0/
にアクセスします。

色々あって、「むむむむ・・・」ですが、自分の環境にあったzipファイルをファイル名のパターンで選びます。

ファイル名の「XCache-1.3.0」がxCacheのバージョンです。これは最新の1.3.0しかありません。ので割愛。
つぎに「php-9.9.9」とあり、これは対応するPHPのバージョンです。自分の環境のPHPのバージョンにあわせます。
つぎに「nts」と「win32」があります。「nts」は「None Thread Safe」の略でPHPをCGIとして使っている場合にはこちらを。「win32」はPHPをモジュールとして使っている場合はこちらを選びます。
最後に「VC6」と「VC9」がありますが、こちらは使っているWebサーバーによって、VC6=Apache、VC9=IISとなります。
(実際にはインストールされているPHPにあわせて選択します。PHPの選択についてはこちらの記事 もあわせてご覧ください)

以上の4(3?)パターンから選んだファイル名のzipファイルをダウンロードしておきます。



インストール&設定してみる

ダウンロードが終わったらzipファイルを解凍します。
そこに php_xcache.dll ファイルがありますので、これをPHPのインストールされたフォルダ(例えば C:\PHP)にあるextフォルダ(例えば2 C:\PHP\ext)のなかにコピーします。
php_xcache.dll と同じフォルダにある xcache.ini に記述されている内容を php.ini にコピペします。
[xcache-common] セクションの extension 指定子を自分の環境にあわせて書き換えます。
(extension_dirを適当に設定しているなら extension=php_xcache.dell でおk)

最後にWebサーバーを再起動します!!



ベンチマークを取ってみる

んでは、xCache適用前と後でどれくらいの変化があったのかベンチマークを取ってみます。

検証したPCのスペックは以下のとおり。
CPU:Intel Pentium Dual CPU E2140 1.6GHz
メモリ:2GB
OS:Windows VISTA Pro
Apache 2.0.63
PHP 5.3.2(PHPはモジュールで使ってます)

検証に使ったアプリケーションは、pukiwiki のバージョン 1.4.7 。

また、検証方法として、Apacheのabを使って「ab -n 1000 -c 10 http://localhost/wiki/」として、適用前と後で10回づつ測定。
「Request per second」値の最小値および最大値を省いた値の平均値を比較してみました。

・xCache 適用前
1回目 18.13
2回目 18.22
3回目 18.20
4回目 18.29
5回目 18.22
6回目 18.20
7回目 18.18
8回目 18.26
9回目 18.20
10回目 18.18
平均 Request per second 値:18.20

・xCache 適用後
1回目 27.70
2回目 27.82
3回目 27.77
4回目 28.05
5回目 27.69
6回目 28.00
7回目 27.90
8回目 28.08
9回目 28.07
10回目 28.18
平均 Request per second 値:27.92

ということで適用前と後で約 1.5 倍くらい性能が向上しています。

今回は検証にpukiwikiを使いこのような結果になりましたが、インクルードしているファイルの数などなど、プログラムの構成で得られる効果が異なるようですので、実際に導入するさいには必ず検証が必要ですね。