薪技术|0到1学会性能测试第45课-apache调优技术
前面的推文我们掌握了apache监控技术,今天我们继续来看下apache调优技术,究竟是怎么做性能调优???后续文章都会系统分享干货,带大家从0到1学会性能测试。
Apache调优技术
Apache最近的版本是2.2版,Apache2.2是一个多用途的web服务器,其设计在灵活性、可移植性和性能中求得平衡。虽然没有在设计上刻意追求性能指标,但是Apache2.2仍然在许多现实环境中拥有很高的性能。相比于Apache 1.3,2.2版本作了大量的优化来提升处理能力和可伸缩性,而且大多数的改进在默认状态下就可以生效。但是,在编译时和运行时,都有许多可以显著提高性能的选择。本章节主要阐述在安装Apache2.2时,服务器管理员可以改善性能的各种方法。
关于Apache调优主要包括三个方面的内容:
1)硬件与操作系统方面
2)运行时的配置
3)编译时的配置
01硬件与操作系统
影响web服务器性能的最大的因素是内存,一个web服务器应该尽量不使用交换机制,因为交换产生的滞后使用户总感觉“不够快”,此时用户就可能去按“停止”和“刷新”,从而给web服务器带来更大的负载。所以应该控制MaxClients的设置,以避免服务器产生太多的子进程而发生交换,先计算出每个Apache进程平均消耗的内存,然后再为其它进程留出足够多的内存。
其他因素比较普通,装一个足够快的CPU,一个足够快的网卡,几个足够快的硬盘,这里说的“足够快”是指能满足实际应用的需求。
操作系统是很值得关注的又一个因素,已经被证实的很有用的经验有:
-
选择能够得到的最新最稳定的版本并打好补丁。现在许多操作系统厂商都提供了可以显著改善性能的TCP协议栈和线程库。
-
如果操作系统支持sendfile()系统调用,则务必安装带有此功能的版本或补丁。在支持sendfile的系统中,Apache2可以更快地发送静态内容而且占用较少的CPU时间。
02运行时配置
运行时的配置主要涉及到的相关模块为:mod_dir、mpm_common、mod_status,涉及到的相关指令为:AllowOverride、HostnameLookups、DirectoryIndex、EnableMMAP、EnableSendfile、KeepAliveTimeout、MaxSpareServers、MinSpareServers、Options、StartServers。
1) AllowOverride
AllowOverride两种设置All或None,如果网站空间允许覆盖(通常是用.htaccess文件),则Apache会试图对文件名的每一个组成部分都打开.htaccess ,例如:
DocumentRoot /www/htdocs
<Directory />
AllowOverride All
</Directory>
如果请求“/index.html”,则Apache会试图打开“/.htaccess”、“/www/.htaccess”、“/www/htdocs/.htaccess”。为了得到最佳性能,应当对文件系统中所有的地方都使用AllowOverride None设置。
2) HostnameLookups和其它DNS
在Apache1.3以前的版本中,HostnameLookups默认被设为On,这样会带来延迟,因为对每一个请求都需要作一次DNS查询。在Apache2.2中,它被默认地设置为Off。如果需要日志文件提供主机名信息以生成分析报告,则可以使用日志后处理程序logresolve,以完成DNS查询,而客户端无须等待。
一般情况下应该是在其它的机器上,而不是在web服务器上执行后处理和其他日志统计操作,以免影响服务器的性能。
如果你使用了任何“Allow from domain”或“Deny from domain”指令(也就是domain使用的是主机名而不是IP地址),则代价是要进行两次DNS查询(一次正向和一次反向,以确认没有作假)。所以,为了得到最高的性能,应该避免使用这些指令(不用域名而用IP地址也是可以的)。
注意:可以把这些指令包含在段中使之局部化。在这种情况下,只有对这个区域的请求才会发生DNS查询。下例禁止除了.html和.cgi以外的所有DNS查询:
HostnameLookup