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