« 姿を見ない | メイン | 社のサーバにも導入&トラブル発生!? »

2006年10月12日

Debian+apache2にeAccelerator入れてみました。 [ 日記の類 ]

 針生です。
 最近仕事先で借りてる鯖のhttpdがめっぽう重い事を悩んでる針生です。

 いや、ね。
 原因はうすうす分かってるんです。

 針生が作ったWikiの様なモノがあるんですが……。
 結構高機能な上プラグインと称した拡張が出来るようになってるんです。
 PHPで組んだんですがね。

 そいつがテキストのソースからHTMLを起こす部分と、その部分でのプラグインの展開、実行等々で多数のファイルをrequireしてたりして。
 特にプラグインに至っては一つ一つの機能に対したプラグインをワザワザrequireするために、機能が増えるごとに重くなって来てたのは解ってたんです。

 PEARとか使ってないだけマシかなぁとか思ってたんですが、それにしても重い
 サーバ全体が重いのも、全部プロセスはhttpdの上にのってるんで、正確な負荷は解らないけど、原因の一因になってそうな事は確か
 まぁ、この一つのサーバにヴァーチャルホストが120個ぐらい載ってるってのが異常事態なんですが。
 その各バーチャルホスト上で例のWikiもどきが動いているという阿鼻叫喚

 で、思い出したのが、eAccelerator
 PHPを中間言語にコンパイルした結果をキャッシュするとかなんとか言う奴なんですがね。

 取りあえず自宅サーバ実験用ラットになってもらう事にしてインストール
 こいつは某スクリプト(PEAR使用)が稼働中なんで、requireしまくり。ちょうどいい。

 ってことで、Debianにインストールしてみました。
 phpizeとphp-configが変なところに入ってたんで困惑しながらも大体以下の手順でした。

$sudo aptitude install libtool1.4 libguile-dev automake
$sudo aptitude install g++

 何か必要だったのでインストール。

$wget http://keihanna.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.4.tar.bz2
$bunzip2 eaccelerator-0.9.4.tar
$tar xvf eaccelerator-0.9.4.tar
$cd eaccelerator-0.9.4 

 落としてきて解凍、ディレクトリへ移動。

$su -

 何となくルートになる。

#export PHP_PREFIX="/usr/"
#PHP_PREFIX/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
#make
#make install

 configとmake。

#mkdir /usr/lib/php4/extensions
#ln -s /usr/lib/php4/20020429/eaccelerator.so /usr/lib/php4/extensions/eaccelerator.so 
#mkdir /var/cache/eaccelerator
#chown www-data:www-data /var/cache/eaccelerator

 取りあえずextensionsディレクトリが無かったんで作成して、その後にシンボリックリンク作成
 キャッシュディレクトリも作成。

#emacs /etc/php4/apache2/php.ini

 でPHPのini編集。

[eaccelerator]
zend_extension="/usr/lib/php4/extensions/eaccelerator.so"
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/var/cache/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"
 メモリサイズは128MBしか積んでないので16MBにしてみました。
 保存してemacs終了。

#/etc/init.d/apache2 restart

 で、サーバ、再起動!

 ……。

 早い!!

 兎に角早い。もう爆速
 体感速度は相当変わりました

 肝心のCPU負荷はうちの鯖、非力なんでアテにならない上に、インストールする前の負荷を見てないんでわからないんですが、キャッシュの状態を表す付属のPHP、eaccelerator.phpによると、ちゃんとキャッシュも働いている模様

 相性の悪いPHPも特になさそうなので、仕事先で借りてるサーバにも取りあえずインストールだけしておきました。
 今は取りあえずphp.iniの例の部分をコメントアウトしてあります。

 稼働は明日上司が居る時に……。

投稿者 hiroto : 2006年10月12日 23:58

トラックバック

このエントリーのトラックバックURL:
http://www.divby0.com/mt/mt-tb.cgi/291

コメント

うんうん、俺の知り合いも早くなったといっていたわ~
俺の場合はたいした物を作ってないから導入するまでもなかったのだがね(笑

もし導入するときは上記の手順を参考にさしてもらうよ~♪

投稿者 alex : 2006年10月13日 10:37

▼alexさん
 もう本当に驚くほど早くなりましたよ。
 ビックリしてます。

 どうか上の情報がご参考になりますように。

投稿者 針生 : 2006年10月14日 00:03

コメントしてください




保存しますか?


スパム防止にご協力下さい