当前位置:首页 > 技术文章 > apache > apache优化
apache优化
文章来源:本站原创  浏览次数:78  发布日期:2013-02-05

apache版本号2.2.X

1、  Apapchegzip模块包括mod_gzipmod_deflateapache2.X默认内置的是mod_deflate。打开apachemod_deflate.so模块。开发的时候要注意压缩文件的类型,文件不要太大

httpd.conf文件里加入如下语句并且开启该模块:

DeflateCompressionLevel 9 压缩等级,越高压缩率也越高,但耗费CPU资源,一般平衡值为6.压缩率根据服务器情况而定,如果服务器CPU资源丰厚的话,可以设高点的压缩率,来加快传输速度。

<ifmodule mod_deflate.c>

DeflateCompressionLevel 9

AddOutputFilterByType DEFLATEtext/plain

AddOutputFilterByType DEFLATEtext/html

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE text/javascript

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/x-httpd-php

AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE text/css

AddOutputFilter DEFLATE htm htmlxml php js css

</ifmodule>

2、  mod_expires可以减少10%左右的重复请求(实际上是客户端缓存)

<ifmodulemod_expires.c>

 ExpiresActive on

 ExpiresByType image/gif "access plus 3 day"

 ExpiresByType image/jpeg "access plus 3 day"

 ExpiresByType image/png "access plus 3 day"

 ExpiresByType image/x-icon "access plus 3 day"

 ExpiresByType application/x-shockwave-flash "access plus 3day"

 ExpiresByType text/css "access plus 3 day"

 ExpiresByType text/javascript "access plus 3 day"

 ExpiresByType application/javascript "access plus 3 day"

 ExpiresDefault "access plus 1 day"

</ifmodule>说明:所有的gif图片和CSS文件一个月后过期,所有的文件缺省一天过期

3、  多余模块注释:

一般不需要的模块

mod_env.so 允许APACHE修改或清除传送到CGI脚本和SSI页面的环境变量

mod_negotiation.so 提供内容协商支持

mod_status.so 生成描述服务器状态的Web页面

include已经过时了

mod_include.so 实现服务端包含文件(SSI)处理

mod_autoindex.so 自动对目录中的内容生成列表,类似于’ls’或‘dir’命令

mod_cgi.so 在非线程型MPMprefork)上提供对CGI脚本执行的支持

mod_asis.so 发送自己包含HTTP头内容的文件

mod_actions.so 基于媒体类型或请求方法,为执行CGI脚本而提供

mod_auth_basic.so 使用基本认证

mod_authn_default.so 在未正确设置认证模块的情况下简单拒绝一切认证信息

mod_authn_file.so 使用纯文本文件为认证提供支持

mod_setenvif.so 根据客户端请求头字段设置环境变量

最好保留的有:

mod_log_config.so 用于定制LOG格式

mod_mime.so 用于增加文件应用的关联

mod_dir.so 用于缺省文件index.php

可用可不用的有:

mod_userdir.so 允许用户从自己的主目录中提供页面(使用“/~username”)

mod_alias.so 提供从文件系统的不同部分到文件树的映射和URL重定向

4、  httpd-default.conf配置文件的设置。

Timeout 300 接收和发送前超时秒数

KeepAlive On 是否允许稳固的连接(每个连接有多个请求)。建议使用长连接

MaxKeepAliveRequests 100 在稳固连接期间允许的最大连接数,设为0表示无限制接入

KeepAliveTimeout 15 在同一个连接上从同一台客户上接收请求的秒数

HostnameLookups Off 指定记录用户端的名字还是IP地址

ServerTokensProd 服务器信息最少输出

ServerSignatureOff 关闭版本信息输出

httpd-mpm.conf配置文件的设置

更佳最大值计算的公式

Apache_max_process_with_good_perfermance <(total_hardware_memory/apache_memory_per_process) * 2

Apache_max_process = Apache_max_process_with_good_perfermance * 1.5

(说明:最大最优进程数 < (硬件总内存/ 每个进程占用的内存数)*2

最大进程 =最大最优进程数*1.5)

Windows下采用的WinNT MPM 这是针对WINDOWS优化过的。使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。

<IfModule mpm_winnt_module>

  Win32DisableAcceptEx

  ThreadsPerChild      150

   ThreadLimit            1920

  MaxRequestsPerChild    0

</IfModule>

Win32DisableAcceptEx 为了取消WINNT的一组AcceptEx程序库所特别下的指令

ThreadsPerChild 为子进程的线程数

ThreadLimit 为线程的上限,默认是1920

MaxRequestsPerChild 每个子进程处理的最大请求数,0为不限制。

5、  性能报告

通过apache提供的server-status 状态报告,来查看当前的设置是否合理

首先加载mod_status模块

LoadModule status_module modules/mod_status.so

然后设置访问的地址

<Location /server-status>

SetHandler server-status

allow from all

Order allow,deny

</Location>

ExtendedStatus On  开启这个能看到更详细的信息

浏览器直接输入 http://域名/ server-status 即可查看

这个模块有安全漏洞,如果不是必要,请关闭。

6、  日志管理

Apache访问日志的管理,

日志格式:LogFormat "%h %l %u%t \"%r\" %>s %b \"%{User-Agent}i\"" mali

放到<IfModule log_config_module></IfModule>里。

然后在httpd-vhosts.conf文件<VirtualHost *:80> </VirtualHost>加上

CustomLog "|bin/rotatelogslogs/qp_snplay_com_access_%Y_%m_%d.log 86400 480" mali

为了防止由于日志过大导致apache死掉,所以采用按天来分割日志。

Error.log采用这个方法不行,由于错误日志较少,所以就不分割了,到时候定期清理就行了。

缺点:rotatelogs.exe进程占用内存,写日志操作会影响到一定的性能。如果对日志不是很看重的话。把日志记录停掉就可以了。采用其他的站点统计工具。

7、  ab测试工具进行压力测试

C:\apache2.2\bin\ab.exe –n1000 –c10 http://qp.snplay.com/index.php

-n1000 表示请求数为1000

-c10 表示并发用户数为10

http://www.redyun.net/index.html表示请求的目标URL

测试结果主要关注 吞吐率 Requests per second

8、  WEB服务器缓存

安全防范:

1、  隐藏apache头部输出的版本信息。


原文来自:apache优化 http://www.redyun.net/technology/35.html

红云案例Case