‘@msm’でググると「もしかして: @msn」と言われます。@msmです。
APC(php-apc)をCentOS 5へ入れてみましたので纏めてみました。
APCは、PHPを中間コードの状態でメモリ上にキャッシュし、次回アクセス時に高速化するモジュールです。同じようなものに、
- APC(Alternative PHP Cache)
- eAccelerator
- PHPA(PHP Accelerator)
- XCache
がありますが、今回は「YUMで入れたい」という理由でAPCをチョイスしました。
なお、PHPAは現時点でphp5に非対応です。
php-apcでPHPの高速化 on CentOS5
- YUMの設定
- APC、APC-ADMINのインストール
- ApacheBenchでの効果の確認
毎回書いていますが、以下の作業はいかなる場合も自己責任でお願いします。
1. YUMの設定
php-apcのあるSeaMew PRMsを、yumで利用できるようにします。
ココとココを参考にsea-mew.repoというファイルを作成します。
# vi /etc/yum.repos.d/sea-mew.repo [sea-mew-noarch] name=SeaMew Fedora AddIn Packages baseurl=ftp://sea-mew.jp/yum/el5/noarch/ enabled=0 gpgcheck=0 [sea-mew-common] name=SeaMew Fedora AddIn Packages baseurl=ftp://sea-mew.jp/yum/el5/i386 enabled=0 gpgcheck=0 # Pentium4以上のCPUを利用している場合はコメントアウトを外すと良い #[sea-mew-pentium4] #name=SeaMew Fedora AddIn Packages #baseurl=ftp://sea-mew.jp/yum/el5/i686 #enabled=0 #gpgcheck=0
私は上記のように「enabled=0」としているので、「yum search php-apc」としても、SeaMewのパッケージを検索することが出来ません。
sea-mewを検索対象にする時は、
# yum search php-apc --enablerepo=sea-mew-common,sea-mew-noarch
と検索しています。sea-mew-commonにphp-apcが見つかりました。
2. APC、APC-ADMINのインストール
YUMにてAPCをインストールします。今回は、同時に見つかったphp-apcのGUIである「php-apc-admin」もインストールしてみました。
# yum install php-apc php-apc-admin --enablerepo=sea-mew-common
「apc-mmap.so」と「apc-sem.so」をコピーします。
# cp -a /usr/lib/php/extensions/apc-*.so /usr/lib/php/modules/
APCを有効にするため、Apacheを再起動します。
# apachectl graceful
phpinfoにて有効になっているかを確認します。
$ vi /var/www/phpinfo.php <?php phpinfo(); ?>
ブラウザで、http://IPアドレス/phpinfo.phpを開き、APC Supportがenabledになっていれば、インストールは成功しています。
![]()
また、http://IPアドレス/php-apc/を表示すると、php-apcの管理画面を見ることが出来ます。(php-apc-adminを入れた場合)
![]()
3. ApacheBenchでの効果の確認
この実験を行ったサーバでは、WORDPRESSで構築しているブログサイトが運営されています。APOの効果がどのくらいあるのかをApacheBenchを使って実験してみます。
先に、php-apcを無効にしてApacheBenchで計測しました。
# vi /etc/php.d/99_apc.ini apc.enabled = 1 ↓ ;apc.enabled = 1 apc.enabled = 0
APCを無効にするため、Apacheを再起動します。
# apachectl graceful
100件のリクエストを10の同時接続で計測した結果です。<APC 無効>
# ab -n 100 -c 10 http://127.0.0.1/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: Apache
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /
Document Length: 22925 bytes
Concurrency Level: 10
Time taken for tests: 47.86521 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 2313200 bytes
HTML transferred: 2292500 bytes
Requests per second: 2.12 [#/sec] (mean)
Time per request: 4708.652 [ms] (mean)
Time per request: 470.865 [ms] (mean, across all concurrent requests)
Transfer rate: 47.95 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 2
Processing: 1835 4593 1808.7 4390 12566
Waiting: 1257 3452 1682.4 3161 11242
Total: 1836 4593 1808.8 4390 12568
Percentage of the requests served within a certain time (ms)
50% 4390
66% 4951
75% 5614
80% 5753
90% 6546
95% 7322
98% 11818
99% 12568
100% 12568 (longest request)
APCを有効にします。
# vi /etc/php.d/99_apc.ini ;apc.enabled = 1 apc.enabled = 0 ↓ apc.enabled = 1
Apacheを再起動します。
# apachectl graceful
100件のリクエストを10の同時接続で計測した結果です。<APC 有効>
# ab -n 100 -c 10 http://127.0.0.1/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: Apache
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /
Document Length: 22895 bytes
Concurrency Level: 10
Time taken for tests: 29.11494 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 2310200 bytes
HTML transferred: 2289500 bytes
Requests per second: 3.45 [#/sec] (mean)
Time per request: 2901.149 [ms] (mean)
Time per request: 290.115 [ms] (mean, across all concurrent requests)
Transfer rate: 77.76 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.5 0 2
Processing: 954 2844 763.6 2785 4806
Waiting: 753 1783 548.2 1660 3085
Total: 954 2844 763.7 2785 4806
Percentage of the requests served within a certain time (ms)
50% 2785
66% 3118
75% 3352
80% 3579
90% 3967
95% 4175
98% 4396
99% 4806
100% 4806 (longest request)
APCをEnableにする事で、約48秒から約29秒に短縮できました。WORDPRESSの管理画面などもレスポンスも若干ですが上がっています。



1月 13th, 2009 at AM 10:31
[...] php-apcでPHPの高速化 on CentOS5 | データセンター ダイレクト ブログ [...]