Ads by Google
新しい記事を書く事で広告が消せます。
PHPは起動するたびに各ファイルを読み込んでコンパイルしています。そのため、読み込むファイルが増えれば増えるほどコンパイルに時間がかかり、またサーバーへの負荷も増大していきます。
そこで逐一コンパイルし直すのではなくいったんコンパイルしたものをキャッシュしておき、2度目以降はそちらを利用することで負荷の軽減と応答時間の短縮を図ったものがPHPアクセラレータ
APCです。
requireなどを全く使わない小規模なスクリプトにはあまり効き目がないのですが、フレームワークやテンプレートエンジンを使った本格的なシステムにはかなりの効果を発揮します。
どれくらいの差が出るのかを調べるべく、テスト環境でみんなの動画サーチのインデックスページにABで負荷テストをかけてみました。結果、このようになっています。
APCなし Requests per second: 16.90 [#/sec] (mean) APCあり Requests per second: 39.56 [#/sec] (mean)ABを実行したノードと開発環境のノードは別ですが、それでも同じLAN内にあるもの同士なので、ネットワークが早い分普通より高めの数字がでています。(一般に動的なサイトのRequests per secondは5〜20程度)それでも、かなり劇的に向上していることがみてとれます。
APCはPECLの拡張 モジュールで、インストールも容易です。(個人的にこれは重要な点だと思っています。経験上インストールに複雑な手順が必要なものは構築や運用のトラブルを招きがちなので、私は嫌いです)
Linuxの場合は
pecl install apc
とコマンドラインで入力した後php.iniのextensionを記述する項にこの1行を追加するだけです。
extension=apc.so
Windowsの場合は最初からphp_apc.dllが同梱されているので、ただphp.iniを編集するだけです。あとはWEBサーバーを再起動すれば完了します。
phpinfo()でステータス画面を開き、APCの項目があれば成功しています。
PHPにはAPCのほかPHP Accelerator、Zend Optimizer、eAcceralator、memcacheといった製品があります。私はインストールの容易性や実績からAPCを採用して、これらは試していませんが、もしかしたらこちらのほうがいいのかもしれません。いいデータをお持ちの方はぜひご教示ください。
みんなの動画サーチ 現在の人気動画