PHP~パフォーマンス向上策

MySQLのパフォーマンスチューニングに続き、WordPressの記述言語であるPHPのパフォーマンス向上策を施します。
PHPのバージョンは 5.3.6 です。

検討結果からお話しすると、最も手軽で、それなりの効果実績と、開発プロジェクトがしっかり動いているという観点から、eAccelerator を導入することにしました。

1.パッケージの検索

さて、eAccelerator のホームページ http://www.eaccelerator.net/ ではソースからのインストールになっています。
rpmもしくはyumでインストールできないかと思い、早速remiに探しに行ったところ、あるじゃないですか。

yumコマンドでパッケージ情報を確認してみると、次の通りeAccelerator のパッケージで間違いないことが分かります。

[root ~]# yum info --enablerepo=remi php-eaccelerator
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * addons: www.ftp.ne.jp
 * base: www.ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: www.ftp.ne.jp
 * remi: remi-mirror.dedipower.com
 * rpmforge: ftp-stud.fht-esslingen.de
 * updates: www.ftp.ne.jp
remi                                                     | 2.6 kB     00:00
3899 packages excluded due to repository priority protections
Available Packages
Name       : php-eaccelerator
Arch       : i386
Epoch      : 1
Version    : 0.9.6.1
Release    : 5.el5.remi
Size       : 120 k
Repo       : remi
Summary    : PHP accelerator, optimizer, encoder and dynamic content cacher
URL        : http://eaccelerator.net/
License    : GPLv2+ and Zend
Description: eAccelerator is a further development of the MMCache PHP
           : Accelerator & Encoder. It increases performance of PHP scripts by
           : caching them in compiled state, so that the overhead of compiling
           : is almost completely eliminated.
2.インストール
[root ~]# yum install --enablerepo=remi php-eaccelerator
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * addons: ftp.tsukuba.wide.ad.jp
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi: rpms.famillecollet.com
 * rpmforge: ftp-stud.fht-esslingen.de
 * updates: ftp.tsukuba.wide.ad.jp
3899 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php-eaccelerator.i386 1:0.9.6.1-5.el5.remi set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch       Version                     Repository  Size
================================================================================
Installing:
 php-eaccelerator       i386       1:0.9.6.1-5.el5.remi        remi       120 k

Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 120 k
Is this ok [y/N]: y
Downloading Packages:
php-eaccelerator-0.9.6.1-5.el5.remi.i386.rpm             | 120 kB     00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : php-eaccelerator                                         1/1

Installed:
  php-eaccelerator.i386 1:0.9.6.1-5.el5.remi

Complete!
3.設定(eaccelerator.ini)

/etc/php.d/eaccelerator.ini の設定を変更します。変更箇所は2カ所。

(/etc/php.d/eaccelerator.ini の変更箇所)

eaccelerator.shm_size = "30"
eaccelerator.allowed_admin_path = "/var/www/html/eaccelerator"

eaccelerator.shm_size はキャッシュメモリのサイズですが、注意が必要です。
“50”(50MB)にしてみたところ、httpd の再起動(起動)で失敗します。/var/log/httpd/error_log に次のメッセージが出力されます。

PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0
PHP Warning: Module ‘mysql’ already loaded in Unknown on line 0
eAccelerator: Could not allocate 52428800 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax.
PHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0

要するに、カーネルが30MB余りまでしかアロケートを許可していないということです。
よって、とりあえずは”30″で設定したというわけです。

eaccelerator.allowed_admin_path は管理Web機能を提供するhttpdのDirectoryです。ここに、/usr/share/doc/php-eaccelerator-0.9.6.1/control.php を配置します。phpを実行できる設定にする必要がありますので、注意してください。

eAccelerator管理Web画面

eAccelerator 管理 Web 画面

4.アクセスパスワードの変更
[root ~]# vim /var/www/html/eaccelerator/control.php
(略)
/*** CONFIG ***/
$auth = true;		// Set to false to disable authentication
$user = "admin";
$pw = "eAccelerator";  ←これを任意のパスワードに変更します。
(略)
5.httpdの再起動
[root ~]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

これで終わりです。

Comments are closed.