APCを導入してWordPressを速くする

ちょっと前、MySQLのチューニングでWordPressが速くなるのかやってました。
MySQLのInnoDBに基本のチューニングを施してWordPressは速くなるかの完結編 | 曖昧/旬.
で、まー、データ数も大したことないし、MySQLのチューニングぐらいじゃ大した成果はありませんでした。

というわけで、次はPHPに手を入れます。っても、お手軽です。APCというやつを入れるだけです。

APCって何かと言うと、まずPHPの説明だけど、PHPはプログラムをテキストで書いておいて実行する際に機械が理解できる形式に変換する方式を採用しています。その変換作業はコンパイルといいます。そのお陰で、プログラムを修正するたびに手作業でコンパイルする必要がなく、Webシステムのようなサイクルの速い案件では重宝されています。しかし手作業でのコンパイルはしていないんだけど、実は実行するたびに自動でコンパイル的な作業はされていて、小さいプログラムならほとんど影響はないんだけど、プログラムが大きくなってアクセスも増えてくると無視できないものになってくるんだよね。特にフレームワークと呼ばれるものとか、WordPressみたいなちゃんとしたCMSとか、それだけでプログラムが大きいので、そのまま使っていると速度に不満があるかもしれません。

そこでAPCが何をしてくれるかというと、コンパイル済みのコードを保持していてくれて、2回目以降の実行時はコンパイル済みの方を実行してくれるようになります。それでコンパイルにかかっていた時間が浮くわけで、その分だけ処理が速くなります。ということは、元からコンパイルに時間がかかっていなかったら速くはならないってことですね。

まー、詳しくは公式ドキュメントでも読んでください。
PHP: APC – Manual.

で、APCはPECL拡張モジュールなので、インストールはpeclコマンドで行うんだけど、大体のLinuxディストリビューションはパッケージ管理システムから手軽にインストール可能です。自分のとこはCentOS 6.6なのでこんな感じ。

# yum install php-pecl-apc

後はApacheを再起動するだけ。それでとりあえず動く。メモリが厳しいサーバの場合は apc.shm_size を下げた方がいいかもね。

効果はいかほどかと言うと、ここ数日のブログトップの表示速度が平均で0.46秒ぐらいだったのが、再起動後の最初のアクセスで0.49秒、その次からは0.25から0.35秒ぐらい。なかなかいいね。35%ぐらい速くなった。数字にするとすごく効いてるように感じる。

メモリの使用率とかが気になる人は、恐らくパッケージに同梱されているapc.phpをWebで見れるところに置いてみるといい。CentOS 6.6ではここだった。

/usr/share/doc/php-pecl-apc-3.1.9/apc.php

キャッシュのクリアとかしたい人はパスワードを設定しないといけないっぽい。見るだけならコピーしてくるだけでオッケー。

と、まー、そんなもんです。簡単なのでお勧め。

ちなみにPHP 5.5からはOPcacheというAPCと同じようなものが標準機能として付いてくるようになり、しかもデフォルトで有効らしいです。知らないで5.5にアップしたら、すごく速くなったように感じれるかもね。