カテゴリー
Linux

【PHP】APC のインストールして確認して効果を実感!しました!【CentOS 5.9】

1.APC をインストール

わたくしは PHP のインストールを Remi リポジトリを通して行いました。APC は PHP を補強するなにかにあたりますので、APC のインストールも Remi から行います。Remi からといいつつ、いつもの癖で導入したリポジトリ 3 種とも指定していますけれども、そこはご愛嬌です♪その時のログは次のようになりました!

[root@localhost ~]# yum --enablerepo=epel,remi,rpmforge install php-pecl-apc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.fairway.ne.jp
 * epel: ftp.riken.jp
 * extras: mirror.fairway.ne.jp
 * remi: fr2.rpmfind.net
 * rpmforge: mirror.fairway.ne.jp
 * updates: mirror.fairway.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php-pecl-apc.i386 0:3.1.14-1.el5.remi set to be updated
--> Processing Dependency: /usr/bin/pecl for package: php-pecl-apc
--> Running transaction check
---> Package php-pear.noarch 1:1.9.4-12.el5.remi.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================
 Package                Arch             Version                          Repository      Size
===============================================================================================
Installing:
 php-pecl-apc           i386             3.1.14-1.el5.remi                remi           180 k
Installing for dependencies:
 php-pear               noarch           1:1.9.4-12.el5.remi.1            remi           422 k

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

Total download size: 602 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): php-pecl-apc-3.1.14-1.el5.remi.i386.rpm                          | 180 kB     00:01    
(2/2): php-pear-1.9.4-12.el5.remi.1.noarch.rpm                          | 422 kB     00:01    
-----------------------------------------------------------------------------------------------
Total                                                          131 kB/s | 602 kB     00:04    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : php-pear                                                                1/2
  Installing     : php-pecl-apc                                                            2/2

Installed:
  php-pecl-apc.i386 0:3.1.14-1.el5.remi                                                        

Dependency Installed:
  php-pear.noarch 1:1.9.4-12.el5.remi.1                                                        

Complete!
[root@localhost ~]#

以前の投稿、【PHP】APC のインストール方法整理!【CentOS 5.9】 | oki2a24 にて php-pecl-apc だけ yum でインストールしようとすれば OK!、PEAR も勝手にインストールされます、と述べました。今回のインストールの記録を見てみますと確かに依存の関係で php-pear もインストールされています。

APC をインストールするには PECL のインストールが必要で、PECL をインストールするには PEAR のインストールが必要なのです。

ですので違った視点から見れば、APC を yum でインストールすれば PECL も PEAR もインストールされます

2.APC がインストールされたか確認(3つの方法♪)

yum で php-pecl-apc をインストールしましたので、PECL もインストールされています。この PECL コマンドを使用して、APC がインストールされているかどうかを確かめることができます。

[root@localhost ~]# pecl list-all | grep APC
pecl/APC                    3.1.14 Alternative PHP Cache
[root@localhost ~]#

また、PHP でも APC のインストールを確認することができます。ひとつ目は、インストールされているモジュール一覧を確認する方法です。バージョンなどはわかりませんけれども、導入されているかいないかは確認することができました。

[root@localhost ~]# php -m | grep apc
apc
[root@localhost ~]#

ふたつ目は、phpinfo 関数を書いたファイルにウェブブラウザからアクセスする方法もありますけれども、今回はもっとお手軽に php コマンドを使用して APC インストールを確認します。

[root@localhost ~]# php -i | grep apc
Additional .ini files parsed => /etc/php.d/apc.ini,
apc
MMAP File Mask => /tmp/apc.XXXXXX
apc.cache_by_default => On => On
apc.canonicalize => Off => Off
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.file_md5 => Off => Off
apc.file_update_protection => 2 => 2
apc.filters => no value => no value
apc.gc_ttl => 3600 => 3600
apc.include_once_override => Off => Off
apc.lazy_classes => Off => Off
apc.lazy_functions => Off => Off
apc.max_file_size => 1M => 1M
apc.mmap_file_mask => /tmp/apc.XXXXXX => /tmp/apc.XXXXXX
apc.num_files_hint => 1024 => 1024
apc.preload_path => no value => no value
apc.report_autofilter => Off => Off
apc.rfc1867 => Off => Off
apc.rfc1867_freq => 0 => 0
apc.rfc1867_name => APC_UPLOAD_PROGRESS => APC_UPLOAD_PROGRESS
apc.rfc1867_prefix => upload_ => upload_
apc.rfc1867_ttl => 3600 => 3600
apc.serializer => default => default
apc.shm_segments => 1 => 1
apc.shm_size => 64M => 64M
apc.shm_strings_buffer => 4M => 4M
apc.slam_defense => On => On
apc.stat => On => On
apc.stat_ctime => Off => Off
apc.ttl => 7200 => 7200
apc.use_request_time => On => On
apc.user_entries_hint => 4096 => 4096
apc.user_ttl => 7200 => 7200
apc.write_lock => On => On
[root@localhost ~]#

apc.enabled がポイントで、On になってれば APC は有効になっています。他の設定オプションはこちらの公式ページを参照してくださいませ。

ただし、yum で APC をインストール後、Apache を再起動しないと APC を有効にした設定が反映されません!実はわたくし、APC のインストールだけで満足してしまい、効果を測定してちっとも改善されませんでナンデ???としばらくあたふたしておりました。

次のコマンドで Apache 再起動だ♪

[root@localhost ~]# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
[root@localhost ~]#

APC インストール前後で効果を測定

結論から先に書きますと、APC を入れるだけで Apache Bench で処理能力向上の効果が確認できました。

  • Failed requests に目立った変化はなかった。
  • Requests per second の値が向上した。APC 導入の効果あり。

APC 導入前の結果です。

  • Failed requests:        53
  • Requests per second:    4.25 [#/sec] (mean)
[root@localhost ~]# ab -n 100 -c 10 http://192.168.56.111/
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 192.168.56.111 (be patient).....done

Server Software:        Apache
Server Hostname:        192.168.56.111
Server Port:            80

Document Path:          /
Document Length:        40691 bytes

Concurrency Level:      10
Time taken for tests:   23.554106 seconds
Complete requests:      100
Failed requests:        53
   (Connect: 0, Length: 53, Exceptions: 0)
Write errors:           0
Total transferred:      4087065 bytes
HTML transferred:       4069365 bytes
Requests per second:    4.25 [#/sec] (mean)
Time per request:       2355.411 [ms] (mean)
Time per request:       235.541 [ms] (mean, across all concurrent requests)
Transfer rate:          169.44 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   13  44.0      0     153
Processing:   218 2286 3151.9   1995   23400
Waiting:      168 1986 3154.1   1588   23347
Total:        218 2300 3159.4   2049   23553

Percentage of the requests served within a certain time (ms)
  50%   2049
  66%   2269
  75%   2358
  80%   2533
  90%   2819
  95%   4570
  98%  15602
  99%  23553
 100%  23553 (longest request)
[root@localhost ~]#

APC 導入後はこうなりました。

  • Failed requests:        51
  • Requests per second:    7.78 [#/sec] (mean)

Requests per second が APC インストール前よりもおよそ 3 向上しています!導入前が 4 でしたので、ほぼ 2 倍と考えることもできますけれども、そんなに都合の良いおはなしはそうそう無いでしょうから、おそらく倍と言うよりもプラス 3 になったと思っておくことにいたします。

おわりに

本投稿は次のページの続きとなります。ゼロの状態から大分進みまして、わたくし、嬉しいです♪

APC はお手軽にインストールできて効果もありそうですので、入れられる環境には導入するのがよさそうです。PEAR に PECL と少しだけ複雑ですけれども、一度理解してしまえば導入は簡単です♪

Apache Bench で測定したページは開発環境の WordPress トップページです。ですので本ブログを置かせていただいておりますサーバにも APC を導入しようと考えております。

最後に、参考にさせていただいたページを紹介させていただきまして終わりといたします。ありがとうございます!

以上です。

「【PHP】APC のインストールして確認して効果を実感!しました!【CentOS 5.9】」への4件の返信

コメントを残す