最終更新日:平成16年07月07日(水)

PHPの動作を速くする。(PHP Accelerator を使ってみた!)


この頃、たまにスワップ領域が少ない警告メッセージをコンソールに表示したり、領域一杯になったりすることがあります。
領域一杯になる前の警告レベルであれば、応答は遅いけど何とかApacheも動いてくれます。
しかし、領域が一杯になるとtelnetによるリモート・ログインやSamba共有への接続もできなくなってしまいます。
Apacheが応答しないのは勿論です。
おまけに、shutdownもしくはrebootだけではPostgreSQLのpostmasterのプロセスを切ることができず、起動時にPostgreSQLの起動ができません。
(どうやら、終了時postmasterのプロセスIDを書いているファイルのプロセスが存在しないために起こるようです)
そのため、一回目の再起動でpostmasterのプロセスIDを書いているファイルを手動で削除し、再々度OSを起動しています。
果たして、このスワップ領域を圧迫しているのは何だろう。
思うにPHPをインストールし更にPostgreSQLインストールしてからのような気がします。
UebiMiauとphpBB2を実行するとスワップ領域の圧迫が著しいようです。

「PHPはPerlのCGIより軽快に動きます。」というのをよく見かけます。
でも、私のこのサーバーではPerlのCGIの方が負荷もなく軽快に動きます。なんででしょう。

単に、使っているPerlのCGIスクリプトが軽い機能のものだから・・・? PHPがその真価を発揮できないほどの低スペックだから?

そこで、ずーっと前に発見して気になっていた「PHPを高速化する」記事を思い出しました。
その時は、理屈がよくわからなかったし結構よく動いていたので気にかけなかったのです。
でも、そろそろ何か手を打たなくてはと思いました。
(サーバー機をもう少しスペックの高いのにすればいいんですけど・・・・このサーバー機は愛着があって!)


その1つとして、全然使わなくなった「Webmin」をアンインストールしました。少しは負荷軽減になるでしょうか!?


次はいよいよPHP Acceleratorです。

参考にしたサイト

PHP-J.com    ●Dream Seed 自宅サーバーの解説

ダウンロードサイト

ionCube PHP Encoding Acceleration
PHP Acceleratorとは・・・・・・・・・・・・・ionCube PHP Encoding Accelerationより引用!
なんか期待できそうです。
いよいよダウンロードです。
ダウンロードするには簡単なユーザ登録が必要です。
登録するとメールで登録した内容が届きます。パスワードはそのメールには明記されてませんので忘れないようにしましょう。
また、登録後は「会員専用ページ」を見ることができます。
ダウンロード・ファイルはOS別、PHPのバージョン別にバイナリ・パッケージになっているようです。(Windows版は無いです)
ここは、FreeBSDで国際化版PHP4.2.2なので「php_accelerator-1.3.3r2_php-4.2.1_freebsd_i386-4.tgz(55.5Kbyte)」をダウンロードしました。
次にftpでログインしバイナリ・モードでWebサーバー(/home/takaq)に転送しました。
そして、telnetでログイン、スーパーユーザになりダウンロードしたファイルを解凍するディレクトリと解凍後のファイルを保存するディレクトリを作成しました。
解凍後のファイル保存位置 : /usr/local/lib/phpA
解凍位置            : /usr/local/lib/phpA/temp
カレントディレクトリを /usr/local/lib/phpA/temp に移動 /home/takaq にあるファイルを mv して解凍しました。
# mv /home/takaq/php_accelerator-1.3.3r2_php-4.2.1_freebsd_i386-4.tgz .
# tar -xzvf php_accelerator-1.3.3r2_php-4.2.1_freebsd_i386-4.tgz  
そうするとカレントディレクトリ下に php_accelerator-1.3.3r2_php-4.2.1_freebsd_i386-4 というディレクトリが作成され、その中に必要なファイルが展開されていました。
展開されたファイルをファイル保存位置へ移動しました。
# mv php_accelerator-1.3.3r2_php-4.2.1_freebsd_i386-4/* /usr/local/lib/phpA
そしてphp.iniの編集です(vi /usr/local/lib/php.ini)。php.iniの最終行に次の一行を付け加えて wq しました。
zend_extension="/usr/local/lib/phpA/php_accelerator_1.3.3r2.so"
で、Apacheの再起動です。
# sh /usr/local/etc/rc.d/apache.sh stop
# sh /usr/local/etc/rc.d/apache.sh start
ちゃんと設定されたかを phpinfo() で確認しました。(ブラウザでアクセス)
後始末としてカレント・ディレクトリを /usr/local/lib/phpA に移動して /usr/local/lib/phpA/temp を削除しました。(# rm -rf temp)
どれくらい速くなるのか Apache のベンチマーク・ツールで確認してみたかったのですがやめときました。
これでしばらく top でスワップ使用率やPHPスクリプトの動作などを監視してみたいと思います。
まぁ、元々が超々低スペックなPCなのですからどれほどの効果が得られるかは ? です。

今週末から「サービスご利用者様」の利用状況を調査し、継続利用の意向を確認してアカウントを整理したいと思います。
そして、新規募集はやめて最終的には10ユーザくらいに収めたいと考えています。

付記

さらにこまかいshared memory sizeなどなどの設定をphp.iniファイルに設定できるようです。
でも、よく調べてからにしましょう。
こちらを参考にして自分のサーバーにあった設定を記述してください。何も書かなくてもディフォルト値(php.iniの最終行に追加のみ)で動きます。

FreeBSD構築苦労談へ

サイトトップへ