Apacheでmod_deflateを試してみる
VirtualBoxにCentOSをとりあえずインストール
の続き
Apacheでmod_deflateを試してみる。
Apacheのインストールと起動
まずは、Apacheをインストールして起動する。
$ sudo yum -y install httpd $ sudo service httpd start
http://サーバーのアドレス/
レスポンスヘッダーを見てみると、下記のようになっている。
ドキュメントのサイズは5KBほど。
Mac側からabコマンドで負荷をかけてみる。
mac$ ab -c 100 -n 10000 http://サーバーのアドレス/
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 192.168.56.101 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache/2.2.15 Server Hostname: 192.168.56.101 Server Port: 80 Document Path: / Document Length: 5039 bytes Concurrency Level: 100 Time taken for tests: 13.860 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Non-2xx responses: 10000 Total transferred: 52370000 bytes HTML transferred: 50390000 bytes Requests per second: 721.49 [#/sec] (mean) Time per request: 138.601 [ms] (mean) Time per request: 1.386 [ms] (mean, across all concurrent requests) Transfer rate: 3689.91 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 5.6 0 154 Processing: 1 137 136.2 67 2071 Waiting: 0 63 78.8 52 1608 Total: 1 138 136.5 69 2076 Percentage of the requests served within a certain time (ms) 50% 69 66% 151 75% 221 80% 256 90% 329 95% 378 98% 446 99% 521 100% 2076 (longest request)
約13秒かかった。
mod_deflateの設定
mod_deflateを設定する。
httpd.confに下記を追加して、Apacheを再起動する。
$ sudo vi /etc/httpd/conf/httpd.conf ↓追加 <IfModule mod_deflate.c> SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html </IfModule>
$ sudo service http restart
http://サーバーのアドレス/
にアクセスして、レスポンスヘッダーを見てみると、下記のようになる。
ドキュメントのサイズは2KBほどになった。
Mac側からabコマンドで負荷をかけてみる。
(mod_deflateを有効にするには「-H 'Accept-Encoding: gzip,deflate'」を付ける必要あり)
mac$ ab -c 100 -n 10000 -H 'Accept-Encoding: gzip,deflate' http://サーバーのアドレス/
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 192.168.56.101 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache/2.2.15 Server Hostname: 192.168.56.101 Server Port: 80 Document Path: / Document Length: 2017 bytes Concurrency Level: 100 Time taken for tests: 16.121 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Non-2xx responses: 10000 Total transferred: 22620000 bytes HTML transferred: 20170000 bytes Requests per second: 620.30 [#/sec] (mean) Time per request: 161.213 [ms] (mean) Time per request: 1.612 [ms] (mean, across all concurrent requests) Transfer rate: 1370.23 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 3.3 0 49 Processing: 1 160 154.9 135 4250 Waiting: 1 56 82.4 20 1353 Total: 1 161 155.0 136 4255 Percentage of the requests served within a certain time (ms) 50% 136 66% 243 75% 281 80% 302 90% 358 95% 406 98% 464 99% 505 100% 4255 (longest request)
約16秒かかった。
100KBのHTMLの場合
100KBのHTMLだとどうなるか試してみる。
まず、100KBのHTMLを生成する。
$ sudo yum -y install php $ sudo chown ユーザー名:ユーザー名 /var/www/html $ cd /var/www/html $ php -r '$s=range("a","z"); for($i=0;$i<102400;$i++) echo $s[array_rand($s)];' > 100kb.html
mod_deflateを設定していない場合とした場合でどれくらいかかるか測ってみる。
mod_deflateを設定していない場合
mac$ ab -c 100 -n 10000 -H 'Accept-Encoding: gzip,deflate' http://192.168.56.101/100kb.html
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 192.168.56.101 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache/2.2.15 Server Hostname: 192.168.56.101 Server Port: 80 Document Path: /100kb.html Document Length: 102400 bytes Concurrency Level: 100 Time taken for tests: 85.175 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 1026750000 bytes HTML transferred: 1024000000 bytes Requests per second: 117.41 [#/sec] (mean) Time per request: 851.749 [ms] (mean) Time per request: 8.517 [ms] (mean, across all concurrent requests) Transfer rate: 11772.08 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 2 13.5 0 326 Processing: 6 849 1024.4 736 11262 Waiting: 0 77 178.6 1 3834 Total: 7 850 1024.7 737 11263 Percentage of the requests served within a certain time (ms) 50% 737 66% 812 75% 866 80% 902 90% 994 95% 1091 98% 1415 99% 10489 100% 11263 (longest request)
約85秒かかった。
mod_deflateを設定した場合
mac $ ab -c 100 -n 10000 -H 'Accept-Encoding: gzip,deflate' http://192.168.56.101/100kb.html
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 192.168.56.101 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Apache/2.2.15 Server Hostname: 192.168.56.101 Server Port: 80 Document Path: /100kb.html Document Length: 64998 bytes Concurrency Level: 100 Time taken for tests: 129.166 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 652960000 bytes HTML transferred: 649980000 bytes Requests per second: 77.42 [#/sec] (mean) Time per request: 1291.662 [ms] (mean) Time per request: 12.917 [ms] (mean, across all concurrent requests) Transfer rate: 4936.71 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.8 0 11 Processing: 89 1289 250.3 1283 3704 Waiting: 3 233 248.1 177 1857 Total: 94 1290 250.2 1283 3704 Percentage of the requests served within a certain time (ms) 50% 1283 66% 1374 75% 1439 80% 1480 90% 1588 95% 1689 98% 1819 99% 1943 100% 3704 (longest request)
約129秒かかった。