Our Blog

WordPressサーバーにOPcacheを入れようとした話

  • Hiroaki Kato

こんにちは北海道に進出した加藤です。

弊社が運営している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をよろしくお願いします!

This is a unique website which will require a more modern browser to work! Please upgrade today!