WordPressサーバーにOPcacheを入れようとした話
こんにちは北海道に進出した加藤です。
弊社が運営しているanywher.netのサーバーが度々重くなるようになってきたので、AWSのインスタンスをスペックアップする前にPHPのキャッシュを導入しました。
PHPキャッシュはいろいろ種類がありますが、最近はOPcacheとAPCuの組み合わせがトレンドのようです。
まず今回はOPcacheを入れてみたいと思います。
実際に効果が出るのか試すためにサーバーをコピーして簡単な負荷テストを行いました。
今回使用するabコマンド(Apache Bench)はDoSアタックにも使えるコマンドなので悪用はしないようにしてください。
まずは導入前。他にも条件を変えていろいろ計測しましたが代表的なもののみ掲載します。
$ ab -c 10 -n 100 "http://anywher.net/" This is ApacheBench, Version 2.3 <$Revision: 1663405 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking anywher.net (be patient).....done Server Software: Apache Server Hostname: anywher.net Server Port: 80 Document Path: / Document Length: 44909 bytes Concurrency Level: 10 Time taken for tests: 52.809 seconds Complete requests: 100 Failed requests: 0 Total transferred: 4512700 bytes HTML transferred: 4490900 bytes Requests per second: 1.89 [#/sec] (mean) Time per request: 5280.912 [ms] (mean) Time per request: 528.091 [ms] (mean, across all concurrent requests) Transfer rate: 83.45 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 47 77 104.9 60 1095 Processing: 4196 5161 361.7 5115 6140 Waiting: 2563 3492 352.2 3443 4499 Total: 4266 5237 388.9 5172 6265 Percentage of the requests served within a certain time (ms) 50% 5172 66% 5209 75% 5234 80% 5342 90% 6170 95% 6260 98% 6265 99% 6265
t2.microなので心もとない数値ですね、、
これを改善していきます。
OPcacheをインストールします。
PHP5.5からは標準搭載のはずですが、入っていなかったので別でインストールします。
$ sudo yum install php55-opcache
これでもう一度計測
$ ab -c 10 -n 100 "http://anywher.net/" This is ApacheBench, Version 2.3 <$Revision: 1663405 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking anywher.net (be patient).....done Server Software: Apache Server Hostname: anywher.net Server Port: 80 Document Path: / Document Length: 44909 bytes Concurrency Level: 10 Time taken for tests: 31.264 seconds Complete requests: 100 Failed requests: 0 Total transferred: 4512700 bytes HTML transferred: 4490900 bytes Requests per second: 3.20 [#/sec] (mean) Time per request: 3126.447 [ms] (mean) Time per request: 312.645 [ms] (mean, across all concurrent requests) Transfer rate: 140.96 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 47 65 15.5 62 148 Processing: 1807 3026 432.0 2959 5444 Waiting: 1365 1632 410.6 1538 4036 Total: 1865 3091 432.7 3037 5510 Percentage of the requests served within a certain time (ms) 50% 3037 66% 3085 75% 3114 80% 3137 90% 3268 95% 3293 98% 5478 99% 5510 100% 5510 (longest request)
インストールしただけですが、Requests per second (1秒あたりのリクエスト数)が1.89から3.20に改善しました!
同時リクエスト数を変えたりいろいろ計測してみましたが概ねかなりの改善が見られました。
さっそく本番環境に導入しました。
かなり簡単に導入できて速度も改善するのでお試しください。
anywher.netはおかげ様でアクセスが右肩上がりに成長中です!
そろそろインスタンスのスペックアップも検討しないといけなくなってきました。
みなさま今後ともanywher.netをよろしくお願いします!