本日もセミナー。今回はPHPとパフォーマンス改善について。
入門編といった感じだったので、目新しいことはあまりありませんでした。少し物足りなかったです。
ただ、パフォーマンス改善の話でAPCが出てきたときに、そういえばこのブログもAPC使ってなかったなぁ~とふと気づきましたw
APCとは、簡単に言うと中間コードのキャッシュで、これを利用すると大抵の場合パフォーマンス改善が見込めます。PHPの動作を大まかにいうと「PHPコード→コンパイルエンジン→中間コード→実行エンジン」という流れになっていますが、コンパイルエンジンが割と時間食います。
この流れは都度行われるのですが、PHPコードに変化がない場合、コンパイルエンジンはあまり意味がありません。吐き出される中間コードが毎回同じなので。。。
PHPのソースコードに変化がないのであれば、中間コードをキャッシュしてしまって、すぐに実行エンジンを動作させてしまえばいい!ということ実現しているのがAPCです。無駄なコンパイルをせずに済むので、速度向上が見込めます。ただ、メモリ上にキャッシュするのでapacheのリスタート時などは処理が重たくなったり、I/Oが頻発している状況でPHPコードの書き換えを行うと、書き換え途中のコードがキャッシュされておかしなことになってしまう危険もあるそうです。まぁ、いくつか注意点はあるようですが、導入して損はないと思います。
このブログもまだ記事数や機能もそれほど多くないので大丈夫ですが、近いうちにAPCだけは導入しておこうと思います。
もう1つ気になったのがPHPフレームワークの利用について。業務でも今後使おうとしているsymfonyもその1つですが、フレームワークを利用すると、当然パフォーマンスの悪化を考える必要があります。symfonyに関して言えば、doctrine(使ったことないのでよくわからないですが、、、)が結構重いらしく、講師の方はdoctrineの利用はなるべく避けていると言っていました。symfony自体利用したことがないので、ここ最近耳にするsynfony2の登場と合わせて、ちょっと触ってみようと思います。
あとは、memcachedの利用もパフォーマンス改善にいいけど、サーバがクラッシュしたり割り当てられたメモリ以上のデータ量になってデータ欠落が発生する可能性があるから注意したほうがいいよ、ということもさらっと話されてました。個人的にはmemcachedの利用シーンや具体的なチューニング手法を聞きたかったので、ちょっと物足りなかったです。。。
他に仕事でつかえそうだったのが、Q4Mなどのメッセージキューの利用でしょうか。現在仕事で携わっているシステムの改善の一歩がメッセージキューの利用かも、と思っているので、こいつに関しては要調査。
コメント