Hello Guest    ログイン
top > Linux > PHPアクセラレータを試す

PHPアクセラレータを試す

カテゴリー: Linux| 公開: 2008/9/20 | 更新: 2008/9/23 | コメント(1)

PHPを実行する際に作られる中間コードをキャッシュすることで高速化させる。以下のものを試してみた。

Zend Optimizer

Zend Japan, Ltd.からファイルをダウンロード(会員登録が必要)してインストールする。

# tar zxvf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
# cd ZendOptimizer-3.3.0a-linux-glibc21-i386
# ./install

スクリプトを使ってインストールすると、元のphp.iniを書き換えるので元に戻す。

# diff -u php.ini-zend_optimizer.bak php.ini
--- php.ini-zend_optimizer.bak  2008-09-19 23:46:44.000000000 +0900
+++ php.ini     2008-09-19 23:46:44.000000000 +0900
@@ -1263,3 +1263,11 @@
 ; End:

+
+
+[Zend]
+zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0
+zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.0
+zend_optimizer.version=3.3.0a
+zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
+zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
# mv php.ini-zend_optimizer.bak php.ini

Zend Optimizer の設定は別ファイルに書く。

# vi /etc/php5/conf.d/zend_optimizer.ini
[Zend]
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.0
zend_optimizer.version=3.3.0a
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so

eAccelerator

php5-dev(phpizeコマンド)が必要

$ sudo apt-get install php5-dev

eAcceleratorからソースをダウンロードしてインストール。

$ wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
$ tar jxvf eaccelerator-0.9.5.3.tar.bz2
$ cd eaccelerator-0.9.5.3/
$ phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
$ ./configure --enable-eaccelerator
$ make
$ sudo make install
Installing shared extensions:     /usr/lib/php5/20060613+lfs/

設定

ビルドしたディレクトリにあるeaccelerator.iniをコピーして設定する。

# cp eaccelerator.ini /etc/php5/conf.d/
# vi /etc/php5/conf.d/eaccelerator.ini

extension = "eaccelerator.so"
eaccelerator.shm_size = "32"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
  • eaccelerator.shm_size - メモリのサイズ(MB)
  • eaccelerator.cache_dir - キャッシュのディレクトリ
  • eaccelerator.compress - キャッシュの圧縮 1:有効 0:無効
  • eaccelerator.compress_level - 圧縮のレベル 9:最大 1:最小

キャッシュを保存するディレクトリを作成する。

# mkdir -m 777 /tmp/eaccelerator

コントロールパネル(WEB管理画面)を使う

control.phpをコピーする。

$ cp control.php (ApacheのDocumentRoot以下)/eaccelerator/

control.phpにはパスワードなしでアクセスできるように修正する。(Apacheでアクセス制限をしている)

$ diff -u control.php.orig control.php
--- control.php.orig    2008-09-20 19:14:46.000000000 +0900
+++ control.php 2008-09-20 19:15:09.000000000 +0900
@@ -28,12 +28,14 @@
 /** /config **/

 /* {{{ auth */
+/*
 if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_USER']) ||
         $_SERVER['PHP_AUTH_USER'] != $user || $_SERVER['PHP_AUTH_PW'] != $pw) {
     header('WWW-Authenticate: Basic realm="eAccelerator control panel"');
     header('HTTP/1.0 401 Unauthorized');
     exit;
 }
+*/
 /* }}} */

 /* {{{ process any commands */

iniファイルに設定追加

# vi /etc/php5/conf.d/eaccelerator.ini

eaccelerator.allowed_admin_path = "(control.phpがあるディレクトリのパス)"

APC(Alternative PHP Cache)

PECL :: Package :: APCからソースをダウンロードしてインストール。

$ wget http://pecl.php.net/get/APC-3.0.19.tgz
$ tar zxvf APC-3.0.19.tgz
$ cd APC-3.0.19/
$ phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
$ ./configure --enable-apc
$ make
$ sudo make install
Installing shared extensions:     /usr/lib/php5/20060613+lfs/

設定

# vi /etc/php5/conf.d/apc.ini
[apc]
extension=apc.so
apc.mode = mmap
apc.cachedir = "/tmp/apc"
apc.check_mtime = 1
apc.shm_size = 32
apc.optimization = 1
apc.ttl = 43200
apc.check_compiled_source = 1

XCache

aptでインストール。

# apt-get install php5-xcache

設定

# vi /etc/php5/conf.d/xcache.ini

xcache.size  =                32M
xcache.var_size  =            20M
xcache.mmap_path =    "/tmp/xcache"
xcache.optimizer =           On

パフォーマンス比較

トップページ(http://www.parlia.net/weblog/)にアクセスして比較する。

$ ab -n 100 -c 1 http://www.parlia.net/weblog/
  Time per request (ms)
アクセラレータ無効 434.379
eAccelerator 圧縮レベル9 313.633
eAccelerator 圧縮なし 315.739
APC 483.336
XCache 578.363
Zend Optimizer 464.192
Zend Optimizer + eAccelerator 圧縮レベル9 332.118
Zend Optimizer + eAccelerator 圧縮なし 337.198
Zend Optimizer + APC 515.424
Zend Optimizer + XCache 708.111

eAccelerator 以外は逆に遅くなった。

トラックバックURL

1件のトラックバック

  1. 2008/9/24 22:37

    [...] eAcceleratorのeaccelerator_getなどの変数キャッシュの関数を使えるようにしなければならない。前回のconfigureオプションでは有効になっていないので、もう一度ビルドする。 [...]

コメント送信

メールアドレスが公開されたり他で使用されたりすることはありません。