1、mod_deflate模块

  网站随着用户访问量的增加和内容量的增加,网站的带宽会不断的增加,随之就是网站成本的增加。并且当内容量增大的时候,客户端如果带宽小,就会影响用户的体验。因此从这两方面考虑,网站的某些内容必须经过压缩之后再传给用户,然后在用户客户端进行解压,来实现双方共赢的效果。

apache的压缩要用到mod_deflate模块,该模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。它的核心思想就是把文件先在服务器进行压缩,然后再进行传输,这样可以显著减少文件传输的大小。当传输完毕后,客户端游览器会重新对压缩过的内容进行解压缩。如果没特殊情况的话,所以的文本内容都应该能被gzip压缩,例如:html(php),js,css,xml,txt等。特殊情况就是像一些首页上有很多广告投放的js代码,由于需要每次加载进而进行来访信息统计,所以这些广告代码拥有者网站的js不会经过gzip压缩,

 使用mod_deflate模块压缩页面优化传输速度

 可以写为一行,也可以写多行,默认为gzip

适用场景:

 1)节约带宽,额外消耗CPU,可能有些较老浏览器不支持

 2)压缩适于压缩的资源,例如文本文件,图片压缩比很小,没有压缩意义     

[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>

注意:

   并不是所有的浏览器都支持页面压缩格式,不支持时,会提示下载


2、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  能复制真实的流量并重放