Nire.Com

www.nire.com – 1994年からやってる個人サイト、にれ.コム。サーバ構築、携帯、カメラ、ゲーム、目の話、水泳とか。
2009 年 4 月 20 日

むしろ WordPress の管理画面が爆速になる APC (Alternative PHP Cache)

« 前記事: ページキャッシュ問題が描き出す WordPress の自己矛盾

HTML ページキャッシュ用のプラグイン wp-cache に続いて、PHP アクセラレータの中から APC (Alternative PHP Cache) を導入、効果を計測してみました。

WordPress: APC ありとなしの比較

動作環境

  • CentOS 5.3
  • PHP 5

PHP を高速化する PHP アクセラレータ

wp-cache は、最終的に生成された HTML ページコンテンツをキャッシュしておくためのプラグインでしたが、APC は名前の通り PHP に対してはたらく「PHP アクセラレータ」です。

PHP はサーバサイドで動作するスクリプト言語ですが、バイトコード1 に変換し実行しています。Perl もそうです。

WordPress も PHP で書かれた巨大なスクリプトのカタマリですが、毎回同じ *.php スクリプトを構文解釈、バイトコードに変換、とやっているから遅くなります。一回バイトコードになったものは、やはり期限付きでキャッシュしておけば、二度手間が省けて早いじゃん、というのがバイトコードキャッシュです。

PHP アクセラレータは、バイトコードキャッシュと、さらにバイトコードの無駄を省いて最適化するといった付加機能を持っています。代表的なものに APC, eAccelerator, XCache があります。どれにするか悩みどころですが、APC は

私の場合は、インストールのしやすさ、パフォーマンスと安定性の点で評判の高い APC を使ってみました。

APC のインストール

インストールしやすいとは言っても、yum 一発で終了というわけにはいかず。まず pecl3 が動作するために必要なライブラリを yum っておき、pecl を通じて APC をインストール、と二段構えになります。

下記は pecl で必要そうなものをまとめて yum するように書いていますが、gcc, httpd-devel といった基本的なものは、すでに入っている可能性が高いかもしれません。

# yum -y install php-devel php-pear gcc httpd-devel
# pecl install apc
downloading APC-3.0.19.tgz ...
Starting to download APC-3.0.19.tgz (115,735 bytes)
.....
Use apxs to set compile flags (if using APC with Apache)? [yes] :
.....
Build process completed successfully
Installing '/var/tmp/pear-build-root/install-APC-3.0.19//usr/lib/php/modules/apc.so'
install ok: channel://pecl.php.net/APC-3.0.19
You should add "extension=apc.so" to php.ini

php.ini に一行書き加えろと言われますが、ここではメンテ性を考えて /etc/php.d に個別の .ini ファイルとして追加します。最後に httpd を再起動して終了。

# echo "extension=apc.so" >/etc/php.d/apc.ini
# /etc/init.d/httpd restart

分かってしまえば手順はこれだけです。

APC が組み込まれたことを確認

名前はなんでも良いですが、以下のような test.php を仮に作成し、http://……./test.php でアクセスしてみます。

<?php phpinfo(); ?>

だらだら長い info の中から “apc” のセクションを探して、

APC Support: Enabled

Enabled となっていれば OK。phpinfo(); は誰からでも読める状態だと、セキュリティ上好ましくないため消しておきます。

# rm test.php

APC の効果は?

体感的に一番デカいのは、WordPress の管理画面が速くなることでしょう。投稿の一覧、「画像を追加」のポップアップ、すべてがキビキビと動くようになります :) 一度入れてみるともう APC なしには戻れません。

では、ブログの読者からはどうなのか。

wp-cache と同様、http://www.nire.com/ トップページをリクエストして、結果が帰ってくるまでの時間を “ab” で計測してみました。

WordPress: APC ありとなしの比較

キャッシュがない状態での所要時間を 100% として、APC があると 82.75% と、2割近くの時間短縮です。

wp-cache があれば、できあがった HTML コンテンツをキャッシュから送り出すだけだから、APC なんて余計なもの要らないのでは? という仮説もあると思うので、wp-cache + APC 併用をさらに比較。

WordPress: wp-cache 単体と、APC 併用の比較

キャッシュなしを同様に 100% とすると、wp-cache 単体で 0.25% かかっていたのが、wp-cache + APC では 0.11% と、半分の時間になります。

速くなるのは嬉しいのですが、ちょっと不思議ですね。ということで、次回に続く。


  1. Bytecode: 中間コードなどとも呼ばれる
  2. ここはもう少し評価が必要か
  3. PHP Extension Common Library. Perl で用意されている CPAN みたいなもんでしょうか

続き: WordPress + APC でヒット数上位のファイル 7つ »

関連する投稿

「むしろ WordPress の管理画面が爆速になる APC (Alternative PHP Cache)」へのコメント/トラックバック (2)

トラックバック

  1. links for 2009-07-21 - 天野っちのおいしいレストラン
  2. レンタルサーバにAPC(Alternative PHP Cache)をインストールしてみる | はるはる。の開発日記

コメントをどうぞ