圧縮の効果
最近のPCなどのCPUの演算速度はとても速い。
反面、近年のインターネット通信の転送速度は早くなってきたが、モバイル環境では遅い。
圧縮を2倍にすれば、転送時間が半分になる。
nginx.conf で zip on
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
debian の場合 Nginx設定ファイルは、
/etc/nginx/nginx.conf
zip on の記述の コメントアウト # を削除して
##
# Gzip Settings
##
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level が 6 で 17.4% くらいまで圧縮される。
まあ、level 1 でも20% くらいなので、効果を考えれば、レベル1でも良いのかもしれない。
設定ファイルを書き換えたら
設定ファイル nginx.conf の zip 部分の# の削除がすんだら
nginx -t
設定ファイルに間違いがないか確かめる。
nginx -t
nginx の設定を反映
nginx を再起動して設定の反映をさせる。
systemctl restart nginx.service
効果は、7倍程度高速になった
簡単な効果判定だが、
apach bench ab で速度計測を行った。
考えるのが面倒なので、
ab のパラメーター
-n 100 : 総リクエスト数
-c 100 : 同時リクエスト数
同時に100リクエストされた場合とした。
zip off
% ab -n 100 -c 100 https://blog.i-mndks.info/
Server Software: nginx/1.22.1
Server Hostname: blog.i-mndks.info
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-ECDSA-AES256-GCM-SHA384,256,256
Server Temp Key: ECDH X25519 253 bits
TLS Server Name: blog.i-mndks.info
Document Path: /
Document Length: 130009 bytes
Concurrency Level: 100
Time taken for tests: 2.977 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 13040700 bytes
HTML transferred: 13000900 bytes
Requests per second: 33.59 [#/sec] (mean)
Time per request: 2976.713 [ms] (mean)
Time per request: 29.767 [ms] (mean, across all concurrent requests)
Transfer rate: 4278.23 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 5 215 22.4 214 237
Processing: 90 1399 758.3 1397 2639
Waiting: 89 1393 762.1 1395 2637
Total: 305 1614 765.2 1611 2876
Percentage of the requests served within a certain time (ms)
50% 1611
66% 2045
75% 2286
80% 2407
90% 2666
95% 2796
98% 2863
99% 2876
100% 2876 (longest request)
100アクセスを完了するのに、Time taken for tests: 2.977 seconds
約3秒程度の時間がかかった。
zip on
% ab -n 100 -c 100 https://blog.i-mndks.info/
Server Software: nginx/1.22.1
Server Hostname: blog.i-mndks.info
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-ECDSA-AES256-GCM-SHA384,256,256
Server Temp Key: ECDH X25519 253 bits
TLS Server Name: blog.i-mndks.info
Document Path: /
Document Length: 130009 bytes
Concurrency Level: 100
Time taken for tests: 0.416 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 13040700 bytes
HTML transferred: 13000900 bytes
Requests per second: 240.19 [#/sec] (mean)
Time per request: 416.340 [ms] (mean)
Time per request: 4.163 [ms] (mean, across all concurrent requests)
Transfer rate: 30588.12 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 44 236 23.9 233 290
Processing: 76 120 23.6 118 327
Waiting: 2 36 10.8 33 66
Total: 350 356 5.7 354 371
Percentage of the requests served within a certain time (ms)
50% 354
66% 359
75% 360
80% 361
90% 366
95% 367
98% 367
99% 371
100% 371 (longest request)
100アクセスを完了するのに、
Time taken for tests:
- zip off 2.977 seconds
- zip on 0.416 seconds
約7倍程度 高速になった。