概要

CentOS5はyumでPHPをインストールすると標準では5.1.6が入ります。WordPressで使いたいプラグインが5.2以上を要求していたので、yumでPHP5.2を入れる方法を探してみました。
ついでにPHPの中間コードキャッシュ「APC」を導入してサイトの速度向上を計ってみました。

環境:

  • ServersMan@VPS のEntryプラン
  • CentOS 5.4

PHP5.2のインストール

まず古いPHPを削除します。私の環境では以下のものを削除しました。(/var/log/yum.log で後日確認)

php
php-mbstring
php-pdo
php-common
php-cli
php-mysql
gnupg
curl

次に取得先のGPG-KEYをインポートします。

rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

リポジトリの設定をします。

$ vi /etc/yum.repos.d/utterramblings.repo
(以下の内容を入力)
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

後は普通にyumで必要なパッケージをインストールします。

$ yum install php php-mbstring php-pdo php-pdo-mysql ...

インストールが終わったら、yum update でこのリポジトリが使われないように enabled=1のところを enabled=0に書き換えておきます。

apcのインストール

上記で追加した「Jason’s Utter Ramblings Repo」には php-apcも用意されていたので、普通に

$ yum install php-apc

で完了でした。
標準の5.1.6にインストールするには peclを使う方法、他のリポジトリを追加してyumでインストール方法などが紹介されていました。(下部の参考リンクを参照。)

ベンチマーク

Apacheを再起動してベンチマークしてみます。

APCなしの場合

Concurrency Level:      5
Time taken for tests:   103.595070 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      1881150 bytes
HTML transferred:       1869950 bytes
Requests per second:    0.48 [#/sec] (mean)
Time per request:       10359.507 [ms] (mean)
Time per request:       2071.901 [ms] (mean, across all concurrent requests)
Transfer rate:          17.73 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   8.8      0      32
Processing:  1749 10192 22227.7   4236  103562
Waiting:     1198 8469 21650.1   2593  102240
Total:       1749 10194 22232.4   4236  103594

APCあり(shm 32M)の場合

Concurrency Level:      5
Time taken for tests:   66.140733 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      1881150 bytes
HTML transferred:       1869950 bytes
Requests per second:    0.76 [#/sec] (mean)
Time per request:       6614.073 [ms] (mean)
Time per request:       1322.815 [ms] (mean, across all concurrent requests)
Transfer rate:          27.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.1      0       6
Processing:  3831 6405 1900.1   6155   13822
Waiting:     1797 3599 1741.1   3355   10780
Total:       3831 6405 1899.9   6155   13822

およそ40%ほどスピードアップしているようです。
ちなみに /etc/php.d/apc.ini にapc関連の設定があって共有メモリのサイズ(apc.shm_size)を128に増やしてベンチマークしてみましたが特に有意差はありませんでした。
キャッシュされるソースコードの量が増えてくるとこのパラメータが効いてくるようです。

参考

以下のサイトを参考にさせていただきました。ありがとうございます。

コメントは受け付けていません。