Apache
Apache 6 : 性能调优
## Apache日志切割 ##### 方法1、使用 cronolog 为每一天建立一个新的日志 - 安装cronolog程序 ```markdown 主配置文件中的使用方法 ErrorLog "|bin/cronolog logs/error_%Y%m%d.log" CustomLog "|bin/cronolog logs/access_%Y%m%d.log" combined ``` - 虚拟主机配置文件中的使用方法 ```markdown ServerAdmin webmaster@localhost DocumentRoot "E:/htdocs" ServerName localhost ErrorLog "|bin/cronolog logs/localhost/error_%Y%m%d.log" CustomLog "|bin/cronolog logs/localhost/access_%Y%m%d.log" combined ``` ##### 方法2、使用 rotatelogs 每隔一天记录一个日志 - 主配置文件中的使用方法 ```markdown ErrorLog "|bin/rotatelogs -l logs/error_%Y%m%d.log 86400" CustomLog "|bin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined ``` - 虚拟主机配置文件中的使用方法 ```markdown ServerAdmin webmaster@localhost DocumentRoot "E:/htdocs" ServerName localhost ErrorLog "|bin/rotatelogs -l logs/localhost/error_%Y%m%d.log 86400" CustomLog "|bin/rotatelogs -l logs/localhost/access_%Y%m%d.log 86400" combined ``` - 注意,这两个管道日志文件程序还有一点不同之处是: 使用 cronolog 时如果日志是放在某个不存在的路径则会自动创建目录, 而使用 rotatelogs 时不能自动创建,这一点要特别注意 ## apache对页面进行压缩和页面缓存来提升性能 为了实现这些功能需要三个模块mod_deflate、mod_expires和mod_headers 要实现这些东西的配置先在httpd.conf文件下找到下面三个地方 ```markdown #LoadModule deflate_module modules/mod_deflate.so #LoadModule expires_module modules/mod_expires.so #LoadModule headers_module modules/mod_headers.so ``` 同时去掉前面的“#”,这些模块功能已经开启了,下面我们在配置GZIP和Expires了。 配置GZIP和Expires也很容易,我们只需要在httpd.conf 配置文件中启用并进行相关的配置即可,配置如下: ```markdown <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "now plus 1 day" ExpiresByType image/x-icon "access plus 10 year" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType text/css "now plus 1 month" ExpiresByType text/javascript "now plus 1 month" ExpiresByType application/x-javascript "now plus 1 month" ExpiresByType text/html "now plus 5 minutes" ExpiresByType text/plain "now plus 1 month" ExpiresByType image/js "access plus 1 month" ExpiresByType application/x-shockwave-flash "access plus 1 week" <FilesMatch "\.(gif|jpe?g|png)$"> Header set Cache-Control "max-age=604800" Header unset ETag </FilesMatch> </IfModule> ``` ```markdown <ifmodule mod_deflate.c> DeflateCompressionLevel 9 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-jsp AddOutputFilter DEFLATE js css </ifmodule> ``` ```markdown <Location "/"> SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary </Location> ``` ## 修改Apache配置文件开启gzip压缩传输 ##### 第1步 ```markdown LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so ``` 打开httpd.conf后,先将上面两行配置前面的#号去掉,这样apache就会启用这两个模块, 其中mod_deflate是压缩模块,就是对要传输到客户端的代码进行gzip压缩; mod_headers模块的作用是告诉浏览器页面使用了gzip压缩, 如果不开启mod_headers那么浏览器就会对gzip压缩过的页面进行下载,而无法正常显示。 ##### 第2步 在httpd.conf中加入以下代码,可以加到任何空白地方,不了解apache的朋友, 如果担心加错地方,就放到http.conf文件的最后一行, 如果是虚拟服务器可以写.htaccess文件里面,然后放在项目下即可。 ```markdown <IfModule mod_deflate.c> #必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩 SetOutputFilter DEFLATE #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #同上,就是设置不对exe,tgz,gz。。。的文件进行压缩 SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary #设置对文件是文本的内容进行压缩,例如text/html text/css text/plain等 AddOutputFilterByType DEFLATE text/* #这段代码你只需要了解application/javascript application/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩 AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #这段是告诉apache对php类型的文件进行压缩 AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp # Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的 BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 有更多的问题,所以不开启压缩 BrowserMatch ^Mozilla/4.0[678] no-gzip # IE浏览器会伪装成 Netscape ,但是事实上它没有问题 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html </IfModule> ``` ## 启用服务端图片压缩 对于静态的html 文件,在apache 可加载mod_deflate.so 模块,把内容压缩后输出,可节约大量的传输带宽。 ```markdown 打开httpd.conf文件,找到: #LoadModule deflate_module modules/mod_deflate.so 将前面的“#”去掉,变成: LoadModule deflate_module modules/mod_deflate.so ``` 然后在最后一行的LoadModule处,加入如下的几行: ```markdown <IfModule mod_deflate.c> DeflateCompressionLevel 7 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php AddOutputFilter DEFLATE css js </IfModule> ``` - 注意: 默认等级是6,而且9级需要更多的CPU时间,用默认的6级就可以了。 要注意的是,在apache 2.2.15中,我用httpd -l看,居然发现mod_deflat已经内置了,所以其实就不用再在httpd.conf中增加loadmodule了,否则会说出错的
顶部
收展
底部
[TOC]
目录
Apache 1:简介安装
Apache 2:配置虚拟主机
Apache 3:安全
Apache 4:性能测试工具ab的应用
Apache 5:并发调优(MPM)
Apache 6 : 性能调优
Apache 7 : 参数调优
相关推荐
Nginx