こんにちは池島です。PHPにAPCを導入したのでその時の記録を書きます。
導入した環境はCentOS 6.6です。
ネットで探してみたところ下記のコマンドで入れられるようです。
yum install php-pecl-apc
結果、次メッセージ出してエラーとなってしまいました。
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package php-pecl-apc.x86_64 0:3.1.9-2.el6 will be インストール
--> 依存性の処理をしています: php(zend-abi) = 20090626 のパッケージ: php-pecl-apc-3.1.9-2.el6.x86_64
--> 依存性の処理をしています: php(api) = 20090626 のパッケージ: php-pecl-apc-3.1.9-2.el6.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: php-pecl-apc-3.1.9-2.el6.x86_64 (base)
要求: php(api) = 20090626
インストール: php-common-5.5.19-2.el6.remi.x86_64 (@remi-php55)
php(api) = 20121113-64
利用可能: php-common-5.3.3-38.el6.x86_64 (base)
php(api) = 20090626
利用可能: php-common-5.3.3-40.el6_6.x86_64 (updates)
php(api) = 20090626
エラー: パッケージ: php-pecl-apc-3.1.9-2.el6.x86_64 (base)
要求: php(zend-abi) = 20090626
インストール: php-common-5.5.19-2.el6.remi.x86_64 (@remi-php55)
php(zend-abi) = 20121212-64
利用可能: php-common-5.3.3-38.el6.x86_64 (base)
php(zend-abi) = 20090626
利用可能: php-common-5.3.3-40.el6_6.x86_64 (updates)
php(zend-abi) = 20090626
問題を回避するために --skip-broken を用いることができません
これらを試行できます: rpm -Va --nofiles --nodigest
ネット探してみたところyumで読み込んでいるリポジトリがダメみたいですね。
remiを使えば大丈夫みたいです。
yum install php-pecl-apc –enablerepo=remi
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* remi: mirrors.thzhost.com
* updates: ftp.iij.ad.jp
remi | 2.9 kB 00:00
remi/primary_db | 1.0 MB 00:01
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package php-pecl-apc.x86_64 0:3.1.15-0.4.20130912.el6.remi.5.4 will be インストール
--> 依存性の処理をしています: php(zend-abi) = 20100525-x86-64 のパッケージ: php-pecl-apc-3.1.15-0.4.20130912.el6.remi.5.4.x86_64
--> 依存性の処理をしています: php(api) = 20100412-x86-64 のパッケージ: php-pecl-apc-3.1.15-0.4.20130912.el6.remi.5.4.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: php-pecl-apc-3.1.15-0.4.20130912.el6.remi.5.4.x86_64 (remi)
要求: php(zend-abi) = 20100525-x86-64
インストール: php-common-5.5.19-2.el6.remi.x86_64 (@remi-php55)
php(zend-abi) = 20121212-64
利用可能: php-common-5.3.3-38.el6.x86_64 (base)
php(zend-abi) = 20090626
利用可能: php-common-5.3.3-40.el6_6.x86_64 (updates)
php(zend-abi) = 20090626
利用可能: php-common-5.4.35-1.el6.remi.x86_64 (remi)
php(zend-abi) = 20100525-x86-64
利用可能: php-common-5.4.36-1.el6.remi.x86_64 (remi)
php(zend-abi) = 20100525-x86-64
エラー: パッケージ: php-pecl-apc-3.1.15-0.4.20130912.el6.remi.5.4.x86_64 (remi)
要求: php(api) = 20100412-x86-64
インストール: php-common-5.5.19-2.el6.remi.x86_64 (@remi-php55)
php(api) = 20121113-64
利用可能: php-common-5.3.3-38.el6.x86_64 (base)
php(api) = 20090626
利用可能: php-common-5.3.3-40.el6_6.x86_64 (updates)
php(api) = 20090626
利用可能: php-common-5.4.35-1.el6.remi.x86_64 (remi)
php(api) = 20100412-x86-64
利用可能: php-common-5.4.36-1.el6.remi.x86_64 (remi)
php(api) = 20100412-x86-64
問題を回避するために --skip-broken を用いることができません
これらを試行できます: rpm -Va --nofiles --nodigest
うまく行きませんでした。でもメッセージに「remi-php55」とあります。
そうです。PHPは5.5系をインストールしていました。
ならばということで試しに次のコマンドを実行。
yum install php-pecl-apc –enablerepo=remi-php55
うまくインストールできました!
php-pecl-apcu.x86_64 4.0.7-1.el6.remi.5.5 @remi-php55
インストール後はhttpd再起動でAPCが有効になります。
速度の違いを確認するため再起動前にApacheBenchで測定してみます。
abs -n 100 -c 10 https://xxxx.co.jp/
Server Software: Apache
Server Hostname: xxx.co.jp
Server Port: xxxxx
SSL/TLS Protocol: TLSv1,DHE-RSA-AES256-SHA,2048,256
Document Path: /
Document Length: 36595 bytes
Concurrency Level: 10
Time taken for tests: 19.985 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 3699600 bytes
HTML transferred: 3659500 bytes
Requests per second: 5.00 [#/sec] (mean)
Time per request: 1998.503 [ms] (mean)
Time per request: 199.850 [ms] (mean, across all concurrent requests)
Transfer rate: 180.78 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 80 283 926.3 140 7754
Processing: 480 1040 565.5 850 2895
Waiting: 440 1001 559.7 804 2845
Total: 620 1323 1074.9 1000 8594
Percentage of the requests served within a certain time (ms)
50% 1000
66% 1080
75% 1212
80% 1814
90% 2250
95% 2930
98% 6471
99% 8594
100% 8594 (longest request)
続いてhttpdを再起動して再度チェック。
Server Software: Apache
Server Hostname: xxx.co.jp
Server Port: xxxxx
SSL/TLS Protocol: TLSv1,DHE-RSA-AES256-SHA,2048,256
Document Path: /
Document Length: 36595 bytes
Concurrency Level: 10
Time taken for tests: 13.596 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 3699600 bytes
HTML transferred: 3659500 bytes
Requests per second: 7.36 [#/sec] (mean)
Time per request: 1359.604 [ms] (mean)
Time per request: 135.960 [ms] (mean, across all concurrent requests)
Transfer rate: 265.73 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 80 171 162.8 130 1174
Processing: 500 1073 840.9 813 6924
Waiting: 480 1037 837.3 793 6924
Total: 620 1244 951.0 938 7864
Percentage of the requests served within a certain time (ms)
50% 938
66% 1003
75% 1066
80% 1106
90% 2425
95% 2635
98% 4513
99% 7864
100% 7864 (longest request)
Requests per secondが5.00⇒7.36まで増えました。導入の効果はあったようです。
ちなみにAPCのオンオフの切替は「/etc/php.d/acpu.ini」で「apc.enabled」を設定することで切替できます。オンオフの確認は「php – i | grep apc」で確認します。
/etc/php.d/apcu.ini, apc apcu MMAP File Mask => /tmp/apc.XXXXXX apc.coredump_unmap => Off => Off apc.enable_cli => Off => Off apc.enabled => On => On apc.entries_hint => 4096 => 4096 apc.gc_ttl => 3600 => 3600 apc.mmap_file_mask => /tmp/apc.XXXXXX => /tmp/apc.XXXXXX apc.preload_path => no value => no value 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 => php => php apc.shm_segments => 1 => 1 apc.shm_size => 32M => 32M apc.slam_defense => On => On apc.smart => 0 => 0 apc.ttl => 0 => 0 apc.use_request_time => On => On apc.writable => /tmp => /tmp




