使用apache的mod_deflate输出压缩模块进行网站压缩

发布时间:2020-03-09编辑:脚本学堂
使用apache的mod_deflate输出压缩模块进行网站压缩,感兴趣的朋友可以参考下。

使用apache的mod_deflate输出压缩模块进行网站压缩,感兴趣的朋友可以参考下。

一、新安装apache在编译时可以加入对应项:
例如:./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --enable-deflate
或 ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared="proxy deflate proxy_http proxy_ftp

proxy_connect headers"
然后make、make install即可

二、已安装apache则添加mod_deflate模块
例如:
/usr/local/apache/bin/apxs -i -a -c /opt/soft/httpd-2.2.8/modules/filters/mod_deflate.c
/usr/local/apache//bin/apxs -c -i -a /opt/soft/httpd-2.2.8/modules/metadata/mod_headers.c
注://opt/soft/httpd-2.2.8为apache源码文件夹

进行上步以后,到apache的根目录打开httpd.conf配置文件:
# vi /usr/local/apache/conf/httpd.conf
查找到行: LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
即代表安装成功

启用压缩,在httpd.conf文件中加入如下标签段:
 

复制代码 代码如下:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 3
SetOutputFilter DEFLATE
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
#CustomLog logs/deflate_log.log deflate
</ifmodule>
 

其中:
DeflateCompressionLevel 是压缩级别,级别越高,压缩比越大
把那些注释(带"#"的行)的注释标识去掉,则压缩时会打出log,类似:
"GET /index.html HTTP/1.1" 89543/536212 (17%)
其中,"536212"是压缩前的数据大小,"89543"是压缩后的大小,"17%"是压缩比。

压缩率6以上
则压缩效果不明显
并且CPU占用率提高过多

我录制的一个程序是浏览一个动态页面,页面会从DB中根据参数取出一部分数据集,并显示出来,脚本录制很简单。

测试场景设置如下(使用1台做场景监视,3台服务器做负载生成):
方案一:
设置压缩比为4,进行3000负载的测试;每秒增加10用户,增加到3000后持续运行5分钟
方案二:
设置压缩比为0,进行3000负载的测试,在测试半程中调整压缩比为3;每秒增加10用户,增加到3000后持续运行5分钟

测试结果如下(全部是平均值):
  事务响应时间(S) 每秒点击数 每秒HTTP请求响应数 每秒连接数
方案一 3.007 8905.869 8905.864 486.96
方案二 8.264 7147.353 7147.316 359.86

方案 事务运行总数 事务失败数 事务通过率 事务执行速率(TPS)
方案一 62357 3126 94.98% 138.467个/秒
方案二 54776 361 99.34% 111.735个/秒

从方案一的测试结果发现压缩级别为4时,事务通过率较低,系统不稳定;
从方案二的测试结果分析,在压缩级别从0调整到3时,事务处理速度(TPS)从130下

降到70,开始发生错误;
主要错误为:lr_27791:找不到服务器”XXXXXX.XXX.com.cn”

2个方案的测试结果说明,采用较高的压缩级别,会极大影响服务器的性能。