一、mod_deflate模块javascript
网站随着用户访问量的增长和内容量的增长,网站的带宽会不断的增长,随之就是网站成本的增长。而且当内容量增大的时候,客户端若是带宽小,就会影响用户的体验。所以从这两方面考虑,网站的某些内容必须通过压缩以后再传给用户,而后在用户客户端进行解压,来实现双方双赢的效果。php
apache的压缩要用到mod_deflate模块,该模块提供了DEFLATE输出过滤器,容许服务器在将输出内容发送到客户端之前进行压缩,以节约带宽。它的核心思想就是把文件先在服务器进行压缩,而后再进行传输,这样能够显著减小文件传输的大小。当传输完毕后,客户端游览器会从新对压缩过的内容进行解压缩。若是没特殊状况的话,因此的文本内容都应该能被gzip压缩,例如:html(php),js,css,xml,txt等。特殊状况就是像一些首页上有不少广告投放的js代码,因为须要每次加载进而进行来访信息统计,因此这些广告代码拥有者网站的js不会通过gzip压缩,css
使用mod_deflate模块压缩页面优化传输速度html
能够写为一行,也能够写多行,默认为gzipjava
适用场景:web
1)节约带宽,额外消耗CPU,可能有些较老浏览器不支持数据库
2)压缩适于压缩的资源,例如文本文件,图片压缩比很小,没有压缩意义 apache
[root@Node4 ~]# httpd -M|grep deflate #默认已启动了该模块 deflate_module (shared) Syntax OK
设置压缩的格式:浏览器
为了管理方即可以把此配置写在conf.d/deflate.conf中
缓存
SetOutputFilter DEFLATE #启动输出过滤器DEFLATE # mod_deflate configuration <IfModule mod_deflate.c> # Restrict compression to these MIME types #仅压缩下面MIME类型的文件 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css #DeflateFilterNote Input instream #声明输入流的byte数量 #DeflateFilterNote Output outstream #声明输出流的byte数量 #DeflateFilterNote Ratio ratio #在日志中放置压缩率标记,下面是记录日志的,这个功能通常不用 #LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate #设置日志格式 #CustomLog logs/deflate_log.log deflate #定义日志 # Level of compression (Highest 9 - Lowest 1) #默认为6 DeflateCompressionLevel 9 #压缩比,压缩比越高消耗的CPU也越高 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html #Mozilla浏览器仅压缩text/html类型 # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip #浏览器为 不压缩 # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html </IfModule>
注意:
并非全部的浏览器都支持页面压缩格式,不支持时,会提示下载
二、httpd相关的工具程序
htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具
htdigest:为柴窑认证建立和更新用户认证文件
htdbm:操做DBM密码数据库
dbmmanage:为基本认证建立和更新DBM格式的用户认证文件
apachectl:httpd自带的服务控制脚本,支持start,stop
apxs:由httpd-devel包提供的,扩展httpd使用第三方模块的工具
htcacheclean:清理磁盘缓存
logresolve:将Apache日志文件中的Ip地址解析到主机名称
rotatelogs:日志滚动工具,不关闭Apache而切换日志文件,
suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户运行
ab:apache benchmark 基准性能测试工具
使用格式:
ab [options] URL
-n:总的请求数
-c:模拟的并发数
-k:以持久链接模式测试
通常并发数应该小于等于请求数
[root@Node4 ~]# ab -c 100 -n 5000 http://www.a.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 www.a.com (be patient) Completed 500 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: Apache/2.2.15 Server Hostname: www.a.com Server Port: 80 Document Path: / Document Length: 19 bytes Concurrency Level: 100 #并发级别 Time taken for tests: 1.544 seconds #测试所经历的时长 Complete requests: 5000 #完成的请求 Failed requests: 0 Write errors: 0 Total transferred: 1554888 bytes #总传输的大小,包含了报文的首部大小 HTML transferred: 95608 bytes #总传输的html文档的大小,只包含实体的大小 Requests per second: 3237.42 [#/sec] (mean) #每秒完成的请求个数, Time per request: 30.889 [ms] (mean) #每批(并发数)请求所消耗的时长,以100个一批,按批平均 Time per request: 0.309 [ms] (mean, across all concurrent requests) #每一个请求所消耗的时长 Transfer rate: 983.17 [Kbytes/sec] received #每秒输出的字节数 Connection Times (ms) min mean[+/-sd] median max Connect: 0 14 5.1 14 30 Processing: 4 17 4.7 16 37 Waiting: 0 14 3.7 13 29 Total: 4 31 4.9 30 52 Percentage of the requests served within a certain time (ms) 50% 30 66% 32 75% 33 80% 34 90% 37 95% 40 98% 44 99% 45 100% 52 (longest request) [root@Node4 ~]#
注意:
测试时,应该再使用浏览器看是否能访问测试的页面
ab测试只测试了一个页面
ab测试并不精确,只作参考
web服务器压力测试工具还有不少个:
webbench
http_load
seige
tcp_copy 能复制真实的流量并重放