トップ  > PHP  > ライブラリ・フレームワーク  > 記事

No.1914 PHP::eacceleratorのインストールと設定(Apache2/PHP5)

PHP :: eaccelerator のインストールと設定 (Apache2/PHP5)

 

eaccelerator とは

PHPをはじめとしたインタプリタ言語(スクリプト言語)は、実行のたびに毎回スクリプトをコンパイルします。
C言語のようなコンパイラ言語と比べ実行速度が遅いのは、このコンパイルにかかるオーバーヘッドが大きく影響しています。

eaccelerator は、PHPスクリプトのコンパイル結果(バイトコード)をキャッシュしておき、2回目以降はそのバイトコードを利用することでコンパイルにかかるオーバーヘッドを減らし、高速化を図ります。


ベンチマーク(効果測定)

eaccelerator のインストール前と後で、とあるサイト(PHPが動的に生成しているサイト)のベンチマークを取ってみました。

execute_time スクリプト実行時間
memory_usage PHPに割り当てられたメモリ
memory_peak_usage PHPに割り当てられたメモリの最大値

eaccelerator のインストール前

  execute_time memory_usage memory_peak_usage
1回目 0.179284 sec 96 KB 7,194 KB
2回目 0.178434 sec 96 KB 7,195 KB
3回目 0.178150 sec 96 KB 7,195 KB

eaccelerator のインストール後

  execute_time memory_usage memory_peak_usage
1回目 0.037633 sec 62 KB 813 KB
2回目 0.037447 sec 62 KB 813 KB
3回目 0.033950 sec 62 KB 813 KB

結果

execute_time 約4.9倍の高速化
memory_usage 約35%の節約
memory_peak_usage 約88%の節約

 

スクリプトの高速化はもちろんのことですが、メモリの節約にも貢献しています。
専用サーバーやVPSの環境でPHPアプリケーションを構築する時は、eaccelerator のようなアクセラレーターのインストールを行っておくべきでしょう。


インストール

1. 最新版を wget して展開

% wget "http://sourceforge.net/projects/eaccelerator/files/eaccelerator/eAccelerator%200.9.5.2/eaccelerator-0.9.5.2.tar.bz2/download"
% tar jxvf eaccelerator-0.9.5.2.tar.bz2
tar: bzip2: Cannot exec: No such file or directory
  • 上記のようなエラーが出て展開できないときは bzip2 コマンドがないのでインストールする。

 

2. php 拡張モジュールのビルド環境を準備する

% cd eaccelerator-0.9.5.2
% phpize
  • ディレクトリを移動して、phpize コマンドを実行
phpize コマンドがないときは php5-dev をインストールする
私の環境では、

% sudo apt-get update
% sudo apt-get upgrade
% sudo apt-get install php5-dev

でインストール

関連エントリー:Unix :: コマンド / apt-{get, cache}

 

3. php-config5 を探す

% locate php-config5
/usr/bin/php-config5

4. php-config5 のパスを指定して cofigure

% ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config5

5. make & install

% make
% sudo make install
Installing shared extensions:     /usr/lib/php5/20060613+lfs/

6. eaccelerator.so の確認

% ls /usr/lib/php5/20060613+lfs/eaccelerator.so
/usr/lib/php5/20060613+lfs/eaccelerator.so*

7. キャッシュDIR作成

% mkdir /tmp/eaccelerator
% sudo chown www:www /tmp/eaccelerator
  • chown www:www ⇐ apache のユーザ:グループ ※環境に合わせて指定

 

8. control.php を DOCUMENT_ROOT 配下にコピー

% cp control.php /var/www/htdocs

9. control.php の $user / $pw を変更しておく

/** config **/
$user = "admin"; <= 変更
$pw = "eAccelerator"; <= 変更
/** /config **/

10. php.ini に [eAccelerator] セクションを追記 (最下部に追記)

% vi /etc/php5/apache2/php.ini

[eAccelerator]
zend_extension = "/usr/lib/php5/20060613+lfs/eaccelerator.so" <= eaccelerator.so の指定
eaccelerator.shm_size = "64"
eaccelerator.cache_dir = "/tmp/eaccelerator" <= キャッシュDIR の指定
eaccelerator.allowed_admin_path = "/var/www/htdocs/control.php" <= control.php の指定
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"

設定の詳細は下記サイトが参考になります
http://zumomo.org/archives/119/

 

11. apacheの再起動

% sudo apache2ctl restart
もし、apacheが正常に起動しないときは eaccelerator.shm_size を小さくしてみる
eaccelerator.shm_size = "32"

 

12. eaccelerator が正しく動作しているか確認

その1)phpinfo.php を作成し、ブラウザからアクセス

<?php phpinfo(); ?>
⇒ eacceleratorセクションが出来ているか

その2)キャッシュDIR にキャッシュが生成されているか

% find /tmp/eaccelerator -type f | less

その3)control.php にブラウザからアクセス

http://example.com/control.php

引用元

更新:2009/12/23 22:25 カテゴリ: PHP  > ライブラリ・フレームワーク ▲トップ

Python

フロントエンド開発

Docker

AWS

nginx

Node.JS

Linux

web開発

サーバ管理

GCP

svn・git

ソース・開発

プロマネ

HTML・CSS

JavaScript

Alexa

webサービス運用

webサービス

Mac

MySQL

PHP

FuelPHP

ツール, ライブラリ

ビジネス

テンプレート

プレゼン

マネタイズ

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0