QNAPのPHPを高速化(eAccelerator) その2(補足)

前回はQNAPでeAcceleratorの高速化を紹介しました。
今回は、それに関する補足です。

eAccelerator管理画面(control.php)を使用する

eAcceleratorを有効にしても、実際にどれぐらいメモリがキャッシュされているのか、また何がキャッシュされているのかが分かりにくいと思います。
eAcceleratorではもともとそれを管理する画面(control.php)が用意されているので、QNAPに導入します。

  1. phpinfo()で、eAcceleratorのバージョンを確認しておきます。
  2. eAcceleratorの公式サイトから、上記で確認したバージョンと同じアーカイブをダウンロードし、解凍します。
  3. 解凍したフォルダの中にcontrol.phpがあるので、QNAPのQweb以下のどこか(例えばQweb/eaacelerator/など)に配置します。他のファイルは使わないので削除してOKです。
  4. QNAPのphp.ini編集で、[eaccelerator]セクションの一番下に、

    eaccelerator.allowed_admin_path = [配置したパス]/control.php

    を追記して適用します。(上記の例だと/share/Qweb/eaacelerator/control.phpとなります)

  5. デフォルトの設定だと誰でもcontrol.phpにアクセスできる設定になっているので、ファイルを開いて$authをtrueに、$userと$pwを適切に設定するか、.htaccessなどでアクセス制限をしておきます。
  6. ブラウザでcontrol.phpを開いてみます。eAccelerator control panelが表示されればOKです。
    画面下のボタンではキャッシュのクリアができるようですが、私の環境ではディスクキャッシュ(/.eaccelerator.tmp)のクリアができませんでした。

共有メモリサイズ(eaccelerator.shm_size)を変更する

eAcceleratorでは通常、共有メモリサイズ(eaccelerator.shm_size)を任意に指定できます。
QNAPでもphp.iniの中でパラメータeaccelerator.shm_sizeを持っていて、初期値は32(MB)となっています。
しかし、試した人は分かると思いますが、QNAPではなぜかこの値を変更しても32(MB)に戻ってしまいます。
(2011.03.24以下修正した)
調べてみると、この値は/etc/init.d/Qthttpd.shの中でハードコーディングされていることが分かりました。
Qthttpd.shを書き換えることによって、メモリサイズを書き換えられることは確認済みです(詳しくは書きません)。

以上です。

QNAPのPHPを高速化(eAccelerator)

QNAPで例えばWordPressを使っていると、「遅い!」と感じる人も多いと思います。
WordPressはPHP+MySQLで動的にコンテンツを生成するので、当然といえば当然です。

今回は、QNAPのPHPを高速化します。eAcceleratorを使い、メモリに中間コードをキャッシュするようにします。
仕組みについて詳しく知りたい方は、Googleで検索して下さい……。

では手順です。

  1. QNAPの管理画面に入る。
  2. 画面左のツリーから[ネットワークサービス] – [Webサーバ]を選択。
  3. 画面右で[php.iniのメンテナンス]にチェックを入れ、すぐ右のプルダウンで”編集”を選択。
  4. すぐ下にphp.iniの内容が表示されるので、”[eaccelerator]”の文字を探す。
  5. “[eaccelerator]”の直下に “extension = eaccelerator.so” を追加(ダブルクォートは抜いて下さい)。
  6. ちょっと下の[適用]ボタンを押す。

(2011.03.24色々修正……)
これで設定は終わりです。体感でかなり早くなるのが分かると思います。
ただし、私の環境では(TS-119)、キャッシュがルートパーティションを食いつぶし、システムが不安定になってしまいました。
なので、eaccelerator.shm_only = 0 の値を 1 に変えて(メモリのみ使う)運用しています。

以上です。