eAcceleratorでPHPをチューニング 

cho氏のブログ『iphoneアプリで稼げるのか』が
やっぱり重いってことで再度見直してチューニングを。。。
cho氏のブログはWordPressを利用しています。
topページや個別記事のビューは特に問題ありませんが
各ページに遷移する時がとにかく重いといった現象です。
ではでは!っていきなりチューニングというのもかなり無謀なので切り分けを。
VM上で動作していることが問題なのかとふと思い
別サーバにリプレースして動作を確認してみた。
結果特にレスポンスに変化はない。ってことでVMは特に関係はなしと。
前にもあったけどDNSの正引きとか変に逆引きしてないか確認してみたけど
特にこの辺も問題はなさそう。
じゃあDBの処理に時間かかってる?と思ってshow processlistコマンドを
mysqlで実行してみる。レスポンス速すぎてすぐsleepしてる感じw
ってことはWebサーバ上のなにか?ということになりそうです。
おそらくビューを生成するときに時間がかかっている気がするので
PHPの処理の問題かな?と的をしぼってチューニングです。
サーバのリソースもすかすかなのでメモリに全部のっけちゃいましょう!
つーことで今回はeAcceleratorを使ってPHPのチューニングです。
eAcceleratorは、mmcacheの後継にあたるモノらしく
『スクリプトを解析した結果を中間コード(バイトコード)の状態で共有メモリ上にキャッシュします』
って仕事をしてくれるようです。なかなか魅力的じゃないですか。
今回は深く考えずインストールしてみて結果が変わるのかを試す程度の事をします。
簡単にインストールするサーバの環境を。
php-5.2.9
Apache2.2系
すべてソースからインストールしていて/optに入れている。
早速DLとインストール手順です。
# cd /usr/local/src # wget http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.5.2/eaccelerator-0.9.5.2.tar.bz2?use_mirror=jaist # tar jxvf eaccelerator-0.9.5.2.tar.bz2 # cd eaccelerator-0.9.5.2 # phpize # ./configure --enable-eaccelerator=shared --with-php-config=/path/to/php-config # make && make install && echo $? |
何事もなくコンパイル完了。
次にコンパイルされたモジュールを移動させます。
# cp -p /opt/php/lib/php/extensionsno-debug-zts-20060613/eaccelerator.so /opt/php/lib/php/extensions |
次にphpの設定です。以下のモノを追記します。
# vi /opt/php/lib/php.ini ----------------------------- ※追記 [eaccelerator] extension=eaccelerator.so zend_extension="/opt/php/lib/php/extensions/eaccelerator.so" eaccelerator.shm_size = "64" eaccelerator.cache_dir = "/tmp/eaccelerator" eaccelerator.enable = "1" eaccelerator.optimizer = "1" eaccelerator.check_mtime = "0" eaccelerator.debug = "0" eaccelerator.filter = "" eaccelerator.shm_max = "0" eaccelerator.shm_ttl = "0" eaccelerator.shm_prune_period = "0" eaccelerator.shm_only = "1" eaccelerator.compress = "1" eaccelerator.compress_level = "9" eaccelerator.keys = "shm" eaccelerator.sessions = "shm" eaccelerator.content = "shm" ----------------------------- |
※ちょっと忘れてましたが、『extension=eaccelerator.so』この行をちゃんとつけないと
動作してくれません。当たり前なんですけど忘れちゃいますよw
各パラメータの詳細はこちらにあります→http://eaccelerator.net/wiki/Settings
超簡単にいうと、ここではキャッシュの量をどうする?とか
キャッシュはディスクにキャッシュ?メモリにキャッシュ?ハイブリット?
みたいなことを設定しますw
とにかくインストールするだけなので細かいことは。。。ね?
php.iniの設定が終わって、ちゃんと動作しているかはphpinfo()で確認できます。
-246x300.png)
eAcceleratorの項目があれば正常にインストールと動作がしていることになります。
ちょっとはまりましたけど。。。extensions=を忘れてて。。。
さて早速確認です。topページの表示→なんか早くなったかも?気持ちの問題?
問題の遷移は→変わらずwww
なんだよー!w
WordPressの規模じゃ大して体感できないのか、そもそもそこじゃないのか
かなり不明ですが、効果は殆どないです。
まぁWordPressにそもそも効果がないのか、eAcceleratorを有効に使うための
実装が必要なのか不明です。
今回の結論としては、何も考えずインストールするだけで効果を期待するのは間違い!!
淡い期待はしない方がいいですね。
それにしてもなんだかなー。。。手詰まりですね。。。
12月 31st, 2009 at 15:54
MySQLのQuery CacheとWPのSuper Cacheを導入すればいいと思うよ。
後はeAccelerator位しかやることないっす。
それで大体レスポンスは1秒切れますよ。
あと、.htaccessをディレクトリ毎に設置したりしていると、アクセス毎に読みに行くので重たいです。インフラでの設定も大事だけど、アプリケーション側を見直す方が効果は高いすね。
1月 2nd, 2010 at 23:44
コメントありがとう!
MySQL側は見てるとqueryのレスポンスは瞬殺な感じw
やっぱりDB側じゃなくてアプリ側もしくはapacheの処理が考えられそうですよ。
一番ありそうなのは外部に何かしらリクエストを投げてレスポンス待ちな気がする。。。
やっぱりアプリいじる方が効果は高いよねぇ。。。やっぱり中身ですよねーw
1月 3rd, 2010 at 00:38
うん、ほとんどはアプリ側じゃないと意味ないよね。サンに居た時も、ハードの限界は感じていたよ。負荷が高い時に最後の策としてハードやミドルのチューニングは効果あるけど、まずはアプリやね。
WP-Super-Cache入れてるか確認してみたら?
これだと1回のアクセスで静的HTMLとしてキャッシュさせるからアクセスはかなり早くなるよ。ブログはそんなに動的なコンテンツないしな。