PHPを高速化してWordPressを快適にしてみよう

PHPを高速化してWordPressを速く走らせてみよう

WordPressは便利で高機能で使いやすいんだが、サーバー負荷を考えると、チト厳しかったりするので、WordPressにCacheを仕込んだり、PHPのメモリー消費量を、思い切り少なくしたりして動作さ せてみてるわけで、意外とオールインワンなVPSに仕上がってたりしてる。

ただ、もう少し高速にならんもんかと、いろいろ見ていると、php-eacceleratorと言うもんがあるらしい。
動作としては、PHPインタープリターを直接見に行かなくて済むので、案外効くものかわからないとうことで、試してみることにした。
なんとなく早くなっていれば、正解。

というわけで、今回は、php-eacceleratorの導入をしてみた。
このeacceleratorというのは、phpが呼び出される際、呼び出し頻度や、共通のコードなどが呼び出されると、ある程度最適化して、2回目からは、バイナリープログラムとして、動作できるようになっている。
と、つまり、最初の呼び出しでは、本来は、phpインタプリターに渡されるコードをこのphp-eacceleratorへも渡すことになるので、余分な仕事をするはず。
でも、2回目phpインタプリターを経由しないで、バイナリーコードとして走るので、結構早くなるわけだが、果たしてどうか。ここOsukini Serverは、ネットワークスピードはさほど速くないが、スーパーパイなので計測すると、わりと良い数字を出す。
104万桁の結果を参考までに載っけておく。

$ time ./pi 20 >104A.txt
 real    0m18.108s
 user    0m16.601s
 sys     0m0.676s
$ cat 104A.txt
 ------ Started super_pi run : 2012年 9月 29日 土曜日 14:52:33 JST
 ------ Ended super_pi run : 2012年 9月 29日 土曜日 14:52:51 JST
 Version 2.0 of the super_pi for Linux OS
 Fortran source program was translated into C program with version 19981204 of
 f2c, then generated C source program was optimized manually.
 pgcc 3.2-3 with compile option of "-fast -tp px -Mbuiltin -Minline=size:1000 -Mnoframe -Mnobounds -Mcache_align -Mdalign -Mnoreentrant" was used for the
 compilation.
 Start of PI calculation up to 1048576 decimal digits
 End of initialization. Time=       0.228 Sec.
 I= 1 L=       0        Time=       0.768 Sec.
 I= 2 L=       0        Time=       0.880 Sec.
 I= 3 L=       1        Time=       0.876 Sec.
 I= 4 L=       2        Time=       0.880 Sec.
 I= 5 L=       5        Time=       0.868 Sec.
 I= 6 L=      10        Time=       0.868 Sec.
 I= 7 L=      21        Time=       0.876 Sec.
 I= 8 L=      43        Time=       0.872 Sec.
 I= 9 L=      87        Time=       0.868 Sec.
 I=10 L=     174        Time=       0.868 Sec.
 I=11 L=     349        Time=       0.868 Sec.
 I=12 L=     698        Time=       0.864 Sec.
 I=13 L=    1396        Time=       0.876 Sec.
 I=14 L=    2794        Time=       0.876 Sec.
 I=15 L=    5588        Time=       0.860 Sec.
 I=16 L=   11176        Time=       0.860 Sec.
 I=17 L=   22353        Time=       0.844 Sec.
 I=18 L=   44707        Time=       0.840 Sec.
 I=19 L=   89415        Time=       0.780 Sec.
 End of main loop
 End of calculation.    Time=      17.205 Sec.
 End of data output.    Time=       0.068 Sec.
 Total calculation(I/O) time=      17.273(       0.868) Sec.

※ 実時間と、表示されている計算結果が、ほぼ同じなので、ハードウェアレスポンスはそこそこなのではないだろうか。

 

PHP-eAcceleratorのインストール

# yum install php-eaccelerator --enablerepo=remi

あとは、難しいことは考えないでApacheや、phpを利用していると思しきプロセスを再起動すれば良い。

これだけじゃ、ちと味気ないので、一応、本気で使うための設定は、以下

設定ファイルは、/etc/php.d/eaccelerator.iniを編集
変更するところは、概ね2箇所でOKかと。

eaccelerator.shm_size = "0" ←"0"のままで良いが、特に大きくしたい人は、80とかも可能。(defaultは自動)
eaccelerator.allowed_admin_path = "/var/www/html/eaccelerator" ←ここは、適宜。環境に合わせて。 

# mkdir /var/www/html/eaccelerator
# cp /usr/share/doc/php-eaccelerator-0.9.6.1/control.php /var/www/html/eaccelerator/.
# chown -R apache:apache /var/www/html/eaccelerator
# vi /var/www/html/eaccelerator/control.php
/*** CONFIG ***/
$auth = true;		// Set to false to disable authentication
$user = "admin";
$pw = "eAccelerator";  ←ここを任意のパスワードに忘れずに変更しておく。
:wq!

以上で、設定は終わり。

あとは、念の為に、コンパネにアクセスしてみる。

http://hogehoge.com/eaccelerator/ ←自分の環境に合わせてね。

と、こんな具合に出るので、適宜にコントロールできるが、あまり必要ないかもしれないので、インストールしなくても動作上は問題ないハズ。(パスワードは、自分で設定したのを入力)

まあ、めんどっちぃ!と思う場合は、

# du -h /var/cache/php-eaccelerator

と入力して、cacheが生成していれば走っているものと考えてもいいかな。。
概ね、30MB程度のサイズになっていれば、良好かと。

で、一応、現在走らせてみてるわけだが、まあまあ、早くなってると思う。
期待通りな結果が得られたと思う。
一方、ajaxplorerな人は、劇的なスピードアップを感じると思います。

それではまた。