以前、”WordPress 2.6.x 高速化する、2つの大原則” で、Wordpress 自身を高速化する方法を載せましたが、Object-Caching の機能が 2.7.x では怪しいことと、根本的な解決策ではないと考えていました。
根本的な解決策としては、”WordPress を高速化する5つの方法” にもあるとおり、「PHPの高速化」を利用することで、Wordpress のバージョンそのものに影響されない速度の改善が見込まれると考えられます。
ただ、debian では独自の世界が広がっていますので、提供されていないパッケージを利用するにはちょっと壁があります。とはいえ、PHP の高速化自体は非常に興味深いものです。
しばらく、サーバ自体の高速化が実施できない間は、こうやってこそくにがんばっていきたいと考えてますよw
いくつかある PHP 高速化技法のうちから、今回、採用したのは “APC” です。
理由は
- WordPress.org で利用している
- PECLで簡単にインストールできる
ということからです。
うちのサイトでは、Wordpress でのアクセスが一番多いことから、WordPress.org での実績が重要な部分です。
手順は、Installing PHP APC on Ubuntu Dapper (and Debian?) を参考にさせていただきました。
目次
必要なパッケージの準備
$ sudo apt-get update
$ sudo apt-get install apache2-dev php5-dev php-pear make
PECL 使用の準備
$ sudo ln -s /usr/bin/apxs2 /usr/bin/apxs
apache2 + PHP5 環境では必要となりそうです。
/usr/bin/apxs の存在を確認をしておきましょう。
apc の導入とコンパイル
pecl 便利ですね。
$ sudo pecl install apc
これだけで、ダウンロードから apache2 用モジュールへのコンパイルまで、実行されます。 [I]64bit Kernel 利用時にはエラーが出ることがあります。参考元のサイトをご覧ください
php.ini の定義
php.ini で、extension の load を定義しますが、debian ぽく個別の ini ファイルを定義しておきます。
# echo extension=apc.so > /etc/php5/apache2/conf.d/apc.ini
※ root アカウントで実行してください。sudo したいなら sudo vi /etc/php5/apache2/conf.d/apc.ini でどうぞ
apache2 への反映
通常通り、apache2 の再始動を実施してくださいませ。これで、完了です。
$ sudo /etc/init.d/apache2 restart
ベンチマークの結果
トップページの読み込み時間 19秒→12秒 約 7秒の改善
APC実装前
sudo ab -n 10 -c 10 http://oshiire.to/
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 oshiire.to (be patient).....done
Server Software: Apache/2.2.3
Server Hostname: oshiire.to
Server Port: 80
Document Path: /
Document Length: 65287 bytes
Concurrency Level: 10
Time taken for tests: 19.756717 seconds
Complete requests: 10
Failed requests: 0
Write errors: 0
Total transferred: 655570 bytes
HTML transferred: 652870 bytes
Requests per second: 0.51 [#/sec] (mean)
Time per request: 19756.718 [ms] (mean)
Time per request: 1975.672 [ms] (mean, across all concurrent requests)
Transfer rate: 32.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 4821 3000.3 5063 9144
Processing: 3524 8755 3618.6 9152 15062
Waiting: 6 5506 3511.9 6739 10843
Total: 9152 13577 4137.8 12197 19756
Percentage of the requests served within a certain time (ms)
50% 12197
66% 16781
75% 17525
80% 18395
90% 19756
95% 19756
98% 19756
99% 19756
100% 19756 (longest request)
APC実装後
$ sudo ab -n 10 -c 10 http://oshiire.to/
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 oshiire.to (be patient).....done
Server Software: Apache/2.2.3
Server Hostname: oshiire.to
Server Port: 80
Document Path: /
Document Length: 65287 bytes
Concurrency Level: 10
Time taken for tests: 12.962584 seconds
Complete requests: 10
Failed requests: 0
Write errors: 0
Total transferred: 655570 bytes
HTML transferred: 652870 bytes
Requests per second: 0.77 [#/sec] (mean)
Time per request: 12962.584 [ms] (mean)
Time per request: 1296.258 [ms] (mean, across all concurrent requests)
Transfer rate: 49.37 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 134 92.4 107 261
Processing: 3693 9116 4141.3 12628 12913
Waiting: 558 4664 2910.7 6793 7331
Total: 3791 9251 4103.5 12735 12962
Percentage of the requests served within a certain time (ms)
50% 12735
66% 12862
75% 12929
80% 12945
90% 12962
95% 12962
98% 12962
99% 12962
100% 12962 (longest request)
References
↑I | 64bit Kernel 利用時にはエラーが出ることがあります。参考元のサイトをご覧ください |
---|