Apache Performance Tunning

1.重要的就是RAM,对应到参数设置,就是要设置合理的Maxclients值,避免进程运行在swap里。

2.HostnameLookups 要设置为Off,避免处理每次请求前还要查询dns

3.避免使用SymLinksIfOwnerMatch,即除非必要,一般最好全部设置成FollowSumLinks

Options FollowSymLinks

4.避免使用AllowOverride,即除非必要,则最好全部设置为None

AllowOverride None

举例,如果配置成下面的
DocumentRoot /www/htdocs

AllowOverride all

则当访问URI /index.html时,Apache将会试图访问 /.htaccess, /www/.htaccess, 和 /www/htdocs/.htaccess,耗费时间啊。

5.明确DirectoryIndex
即避免使用DirectoryIndex index
而应使用DirectoryIndex index.htm index.html index.shtml index.php

6.MinSpareServers, MaxSpareServers, 和 StartServers
自Apache1.3后,从StartServers开始,最开始每秒可新建一个child process,等一秒,新建2个,等1秒,新建4个,每秒可新建的child数成倍增长,直至最大32个每秒。当然会被限定在MinSpareServers以内。
当每秒新建的child大于等于4个时,就会在apache error log中产生一条记录;如果你看到了这样的一条记录,则说明你需要考虑调整这几项设置了。

7.MPM的选择
Worker MPM:有多个child进程,每个进程又可产生多个thread(线程),每个线程处理一个连接。在高负载的web server上,它的性能更好,相对消耗的内存较Prefork要少。
Prefork MPM:有多个child进程,每个进程只有一个thread(线程),每个进程处理一个连接。在与非线程安全的模块一起工作时,Prefork具有更好的稳定性。