Apacheからnginxに乗り換えた後のWordpressの性能


nginxの設定も一通り終えて、何とか動くようになってきました。いや、実に苦労しました。

設定などは前回同様、以下のサイトを参考にしました。

WordPressを100倍速くする! MySQLの調整やnginx proxy cache - KRAY Inc さくらVPSのWordPressをチューニングして30倍高速化した方法 - 原宿・表参道.jp

自分はApacheから乗り換えたので、いくつかのパスや設定が上記サイトとは異なります。主にそのせいで苦労したんですが・・・。最終的に性能は出るようになりました。

before

[tsukaby@tsukaby ~]$ ab -c 100 -n 100 http://tech-blog.tsukaby.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking tsukaby.com (be patient).....done


Server Software:        Apache
Server Hostname:        tsukaby.com
Server Port:            80

Document Path:          /tech_blog/
Document Length:        36056 bytes

Concurrency Level:      100
Time taken for tests:   20.823 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      3626300 bytes
HTML transferred:       3605600 bytes
Requests per second:    4.80 [#/sec] (mean)
Time per request:       20823.375 [ms] (mean)
Time per request:       208.234 [ms] (mean, across all concurrent requests)
Transfer rate:          170.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       22   35  10.9     34      55
Processing:  1738 12723 5792.8  13427   20778
Waiting:     1569 11915 5760.4  12425   20519
Total:       1760 12758 5794.9  13478   20819

Percentage of the requests served within a certain time (ms)
  50%  13478
  66%  15866
  75%  18171
  80%  19324
  90%  20374
  95%  20773
  98%  20790
  99%  20819
 100%  20819 (longest request)

after

[root@tsukaby ~]# ab -c 100 -n 100 http://tech-blog.tsukaby.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking tsukaby.com (be patient).....done


Server Software:        nginx/1.4.4
Server Hostname:        tsukaby.com
Server Port:            80

Document Path:          /tech_blog/
Document Length:        36371 bytes

Concurrency Level:      100
Time taken for tests:   1.317 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      3660600 bytes
HTML transferred:       3637100 bytes
Requests per second:    75.93 [#/sec] (mean)
Time per request:       1317.039 [ms] (mean)
Time per request:       13.170 [ms] (mean, across all concurrent requests)
Transfer rate:          2714.27 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       22   36  11.4     35      58
Processing:   122  377 182.7    306    1286
Waiting:       19  172 143.9     90     392
Total:        145  413 181.1    345    1315

Percentage of the requests served within a certain time (ms)
  50%    345
  66%    486
  75%    507
  80%    518
  90%    537
  95%    755
  98%   1288
  99%   1315
 100%   1315 (longest request)

初回のabコマンドはキャッシュがないので時間がかかりますが、2回目からのabコマンドは上記のようにすぐに終わります。before、つまり適当に設定したApacheではRequests per second:    4.80 [#/sec] (mean)というように秒間約5リクエストを捌けています。after、つまりキャッシュありのnginxではRequests per second:    75.93 [#/sec] (mean)というように秒間75リクエストを捌けています。

15倍高速化できました。実際Wordpressにアクセスすると早くなったことが体感できました。GoogleのPageSpeed Insightsでもサーバのレスポンスが遅いよ!という指摘が無くなりました。Pingdom Website Speed Testでも以前より早くなったせいか、Your website is faster than 73% of all tested websitesと出るように。前は50%くらいでした。

そんな訳でnginxかなり満足できる結果になりました。Apacheの方が情報量は多いので、自分のようなアマチュア鯖管にはnginxは優しくありませんが、何と言っても早いです。みなさんもぜひお試しあれ。