コンパイルしたファイルをキャッシュして、phpの動作を速くするAPC(Alternative PHP Cache)。おまじない程度に導入してみたのですが、これがなかなか。インストールしただけでも体感出来るくらいがっつり表示が速くなります。さらにちゃんと設定をいじれば、更にもう一段速く。
サーバがなんとなく重いなぁと思っている方はどうぞ。
共有レンタルサーバだとAPCを導入するのは難しいかもしれませんが、VPSや専有サーバを利用している人は利用を考えてみると良いのではないでしょうか。
インストール
APCをインストールするには方法がいくつかあるようですが、今回は一番簡単にインストール出来るpeclを利用する方法をとります。
そんなわけで、まず、peclを使えるようにするために、php-pear、php-devel、httpd-develをインストールします。以下、作業は基本的にルート権限で。
yum -y install php-pear php-devel httpd-devel
インストールが完了したら、次は本命のAPCのインストールです。
pecl install APC
apcの設定ファイルを作成します。ホントはphp.iniに設定を書き込むらしいですが、apc.iniを作成してphp.dディレクトリに放り込んでおいた方が後が楽なので。php.dに放り込んだものは、Apacheを起動するときに自動的に読み込まれます。
echo "extension=apc.so" > /etc/php.d/apc.ini
Apacheを再起動します。
service httpd restart
これでインストール完了。phpinfo()でapcの項目が入っているのを確認してください。
apc.php
apc.phpはメモリの使用量やキャッシュのヒット率などが分かるプログラムです。「/usr/share/pear/apc.php」に入っているので、これをウェブ上から見られる適当なディレクトリにコピーして使用します。
これを使って主に見るのは、メモリの使用量と「Cache full count」と言う項目の2つかと。
「Cache full count」は、キャッシュの使用量が割り当てられているメモリの使用量を超えた場合に増加します。なので、この項目がすぐに上昇してしまう場合は、共有メモリの割り当てを増やす事をオススメします。
逆に「Cache full count」が0で、使用しているメモリサイズが小さい場合は、共有メモリサイズを小さくしても良いかも。
apc.phpにログイン
apc.phpでログインすると、以下のようなことが可能になります。
- ディレクトリごとのキャッシュ数(Per-Directory Entries)が参照出来る
- キャッシュの削除(Clea opcode Cache)が出来る
- ディレクトリが表示される(非ログイン状態ではキャッシュされているファイル名しか表示されない)
ログインするにはidとパスワードを設定する必要があります。apc.phpファイル内の以下の項目を編集します。パスワードが「password」から変更するとログインが有効になります。
defaults('ADMIN_USERNAME','apc'); // Admin Username
defaults('ADMIN_PASSWORD','password'); // Admin Password - CHANGE THIS TO ENABLE!!!
apcの設定を変更する
デフォルトのままでも機能しますが、幾つか設定をいじったほうがいいかもです。設定出来る項目はいろいろあるのですが、とりあえず関係ありそうな項目は以下の項目でしょうか。
- apc.enabled : apcを有効にするか否か。0だと無効。1だと有効。デフォルトは1。
- apc.shm_size : apcに割り当てる共有メモリサイズ。単位はMB。デフォルトは30。搭載メモリの1/4くらいが適当という記述をどこかで見たような気がしますが、どこで見たのか忘れた。。
- apc.ttl : ユーザキャッシュエントリが、他のエントリに割り当てられるまでスロットに残っていることの可能な秒数。0だとキャッシュが残り続けます。デフォルトは0。
- apc.gc_ttl : キャッシュエントリがガベージコレクションのリストに残り続ける秒数。0だと無効になります。デフォルトは3600。
- apc.stat : ファイルが変更されていないかどうかをスクリプトの実行のたびに調べるか否か。0なら無効。1なら有効。デフォルトは1。
全ての設定項目、及び、各項目についての詳しい説明は以下のページを参照してください。
これらの設定を変更する場合は、インストールの時に作成したapc.iniに書き込みます。例えば、以下のように。
extension=apc.so
[APC]
apc.enabled = 1
apc.shm_size = 64
apc.gc_ttl = 3600
apc.ttl = 3600
編集して保存したら、Apacheを再起動します。
service httpd restart
前述のapc.phpで「Cache full count」がカウントされまくってる場合は、apc.shm_sizeの値を増やします。この辺の値は、apc.phpと相談しつつ、変更していって、最適な値を探ってください。
自分が試してみた結果ですが、Wordpressを動かしている場合はデフォルトの30MBだとすぐに溢れてしまうようです。64MBくらい割り当てておけばたぶん大丈夫。複数のWordPressを動かしている場合は、更に多くの共有メモリが必要になります。2つ動かす場合は96MBくらい必要かと思われれます。だいたい、1つ増やすごとに32MB増やす感じ。
WP Super Cache、ApacheのExpireとDeflate、そして今回のapcの導入で、表示速度がノーマルの2、3倍くらい高速になっとります。これで今年の長岡まつりの高アクセスも楽勝か?
参考
- むしろ WordPress の管理画面が爆速になる APC (Alternative PHP Cache) – Nire.Com
- WordPress + APC でヒット数上位のファイル 7つ – Nire.Com
- PHP: 実行時設定 – Manual
関連リンク
標準テキスト CentOS 8 構築・運用・管理パーフェクトガイド [CentOS Stream対応]
- メーカー:SBクリエイティブ
- カテゴリ:Kindle版
- 発売日:2021/07/21