虚拟机的网络性能大部分不好,使用nginx的时候经常会因为带宽的限制跑不到更高的QPS。这个时候可以开启gzip压缩,使得带宽占有成倍的减少。但是开启gzip压缩后有个很大的问题是CPU的消耗非常大。对于普通的精态页面可以考虑配置2个server,其中一个代理另外一个,并且开启cache。简单使用ab压测对比了一下,效果还可以。ab只支持HTTP 1.0,所以在nginx里需要配置一下gzip_http_version 1.0并且ab压测的时候使用添加HEADER ‘Accept-Encoding: gzip’。ab -c 50 -t 60 -H ‘Accept-Encoding: gzip’ http://xxx.net/index.html 配置大修改大致如下:``` http { proxy_cache_path /home/admin/temp levels=1:2 keys_zone=one:10m inactive=5m max_size=100m; gzip_http_version 1.0; #这个只是为了方便ab测试,线上的话可以关闭这个,防止有古董浏览器不支持gzip。gzip on; ……….
server {listen 8888;server_name localhost;charset gbk;gzip on;gzip_comp_level 9;gzip_http_version 1.0;location / {root /home/admin/webpages/;index index.html;}}upstream indexpage {server 127.0.0.1:8888;keepalive 10;}
} }
Document Length:11155 bytesTotal transferred: 567657498 bytesHTML transferred: 557757300 bytesRequests per second:5123.96[#/sec] (mean)Time per request: 9.758 [ms] (mean)Time per request: 0.195 [ms] (mean, across all concurrent requests)Transfer rate: 56809.65 [Kbytes/sec] received
普通的不开启gzip的情况 Document Length:52873bytes
Concurrency Level: 50Time taken for tests: 23.403494 secondsComplete requests: 50000Failed requests: 0Write errors: 0Total transferred: 2654793231 bytesHTML transferred: 2643841260 bytesRequests per second:2136.43[#/sec] (mean)Time per request: 23.403 [ms] (mean)Time per request: 0.468 [ms] (mean, across all concurrent requests)Transfer rate:110777.09[Kbytes/sec] received
普通开启gzip后性能会大幅降低,而且还只是默认的level 1压缩。
Document Path: /index.htmlDocument Length:13000bytes
测试环境:单核的虚拟机上跑的,2G内存。。