PHP5.1.6でeAcceleratorのインストール 2倍高速化
eAcceleratorについて
アクセラレータはスクリプトを解析した結果を中間コードの状態で共有メモリ上にキャッシュし、スクリプトの2回目以降の実行は構文解析を行わずに, キャッシュされた中間コードをダイレクトに読み込むことで処理を高速化しています。
巨大なソースファイルや多数のファイルをインクルードしているサイトなどでアクセラレータは絶大な威力を発揮します。
インストール環境
Centos 5
PHP 5.1.6 パッケージインストール版
php-develパッケージのインストール
# yum install php-devel
※パッケージインストールの場合のみ必要
eAcceleratorのインストール
# wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2
# tar jxvf eaccelerator-0.9.5.2.tar.bz2
# cd eaccelerator-0.9.5.2
※yumでphp-develを入れた場合
# /usr/bin/phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
※phpをソースからインストールしている場合
# /usr/local/bin/phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config
# make
# make install
phpの設定変更
# vi /etc/php.ini
最終行に追加
[eAccelerator]
zend_extension = "/usr/lib/php/modules/eaccelerator.so"
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
キャッシュディレクトリの作成
# mkdir /tmp/eaccelerator
# chmod 0777 /tmp/eaccelerator
Apacheの再起動
# service httpd restart
動作確認・導入結果
<?php phpinfo(); ?> にてeAcceleratorの項目が表示されていることを確認する。
動作していることが確認できたらadベンチマークにて結果を確認
eAccelerator導入前
# ab -n 1000 -c 10 http://localhost/index.html
Concurrency Level: 10
Time taken for tests: 13.77777 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 23102000 bytes
HTML transferred: 22927000 bytes
Requests per second: 76.47 [#/sec] (mean)
Time per request: 130.778 [ms] (mean)
Time per request: 13.078 [ms] (mean, across all concurrent requests)
Transfer rate: 1725.06 [Kbytes/sec] received
eAccelerator導入後
# ab -n 1000 -c 10 http://localhost/index.html
Concurrency Level: 10
Time taken for tests: 6.798706 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 23102000 bytes
HTML transferred: 22927000 bytes
Requests per second: 147.09 [#/sec] (mean)
Time per request: 67.987 [ms] (mean)
Time per request: 6.799 [ms] (mean, across all concurrent requests)
Transfer rate: 3318.28 [Kbytes/sec] received
Requests per second: 1秒間に処理されたリクエスト数。
はまったところ・・・
/var/lib/php/session
ディレクトリに設定していた所有者の設定がrootに戻ってしまっていた。apacheを実行しているユーザーの権限を与えてやらないとsessionファイルが作れなくなりセッション変数が使えない状態ではまりました。