WordPress高速化: mod_pagespeedを使う その3

高速化

前回はmod_pagespeedの導入効果をGoogle Analysticsで評価してみました。

今回は他の方ので効果を測定してみます。

abコマンド

WebサーバのApacheにはパフォーマンス測定用に「ab」というコマンドがついてきます。Debianの場合はapache2-utilsに含まれます。apache2-utilsは次のコマンドでインストールすることができます

sudo apt-get install apache2-utils

abコマンドにはいくつかオプションがありますが、今回は次の設定でパフォーマンスを測定してみることにしました。

sudo ab –n 100 –c 10 http://scratchpad.jp/

-nで測定を行う総リクエスト数、-cで同時に発行できるリクエスト数を指定します。この設定では同時の10個のクライアントから接続された状態を生み出します。

今回は自宅のLinuxでabコマンドを実行しました。

mod_pagespeed導入前

それでは、mod_pagespeed導入前の結果を見てみましょう。何度か実行したのですが似たような傾向があったので、代表的な結果を示します。

sudo ab -n 100 -c 10 http://scratchpad.jp/
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking scratchpad.jp (be patient).....done

Server Software:        Apache/2.2.16
Server Hostname:        scratchpad.jp
Server Port:            80

Document Path:          /
Document Length:        77439 bytes

Concurrency Level:      10
Time taken for tests:   100.035 seconds
Complete requests:      100
Failed requests:        10
(Connect: 0, Receive: 0, Length: 10, Exceptions: 0)
Write errors:           0
Total transferred:      7772220 bytes
HTML transferred:       7743920 bytes
Requests per second:    1.00 [#/sec] (mean)
Time per request:       10003.497 [ms] (mean)
Time per request:       1000.350 [ms] (mean, across all concurrent requests)
Transfer rate:          75.87 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd]  median   max
Connect:        8   10    2.4     9      19
Processing:  5754 9837 1640.2   9520   17935
Waiting:     5590 9391 1605.9   9083   17450
Total:       5763 9848 1641.1   9530   17950

Percentage of the requests served within a certain time (ms)
50%   9530
66%   9822
75%  10378
80%  10651
90%  11337
95%  12721
98%  17753
99%  17950
100%  17950 (longest request)

覚えておきたい数値としては、

  • 「Failed requests」が「10」・・・小さいほど良い
  • 「Request per second」が「1.00」・・・大きいほど良い
  • 「Time per request」が「10003.497」・・・小さいほど良い

というあたりです。

mod_pagespeed導入後

一方で、mod_pagespeedを導入した後に同じコマンドを実行すると次のようになりました。

ab -n 100 -c 10 http://scratchpad.jp/
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 scratchpad.jp (be patient).....done


Server Software:        Apache/2.2.16
Server Hostname:        scratchpad.jp
Server Port:            80

Document Path:          /
Document Length:        76601 bytes

Concurrency Level:      10
Time taken for tests:   100.674 seconds
Complete requests:      100
Failed requests:        98
(Connect: 0, Receive: 0, Length: 98, Exceptions: 0)
Write errors:           0
Total transferred:      7698448 bytes
HTML transferred:       7663648 bytes
Requests per second:    0.99 [#/sec] (mean)
Time per request:       10067.382 [ms] (mean)
Time per request:       1006.738 [ms] (mean, across all concurrent requests)
Transfer rate:          74.68 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        8   11   3.9     10      32
Processing:  6831 9958 2050.4   9524   15913
Waiting:     6720 9779 2059.0   9350   15757
Total:       6843 9969 2049.4   9532   15922

Percentage of the requests served within a certain time (ms)
50%   9532
66%   9929
75%  10173
80%  10296
90%  14919
95%  15440
98%  15788
99%  15922
100%  15922 (longest request)

導入前の数値と比べると

  • 「Failed requests」が「98」・・・導入前は「10」
  • 「Request per second」が「0.99」・・・導入前は「1.00」
  • 「Time per request」が「10067.382」・・・導入前は「10003.497」

となっています。

「Failed requests」が激増しているのが気になります。mod_pagespeed導入後では同時に複数のリクエスト発生する、一部のリクエストを受け付けられない状態になるようです。

Time per request等がほとんど変わっていないので、リクエストが受け付けられれば処理時間はほとんど変わらない(若干遅くなっている)ようですが、リクエストが受け付けられなくなるのはいただけないです。

まとめ

今回の測定結果からmod_pagespeedを導入するとリクエストあたりの処理負荷が大きくなり同時に処理できるリクエスト数が大幅に低下してしまうことがわかりました。

それほど大量のアクセスがあるサイトではありませんが、さすがにここまで「Failed requests」の数に差があると木になるので、mod_pagespeedの導入は中止することとしました。

次回はWebサーバをnginxに変更してWordPressの高速化を狙ってみます。