服务器 频道

怎样优化Apache服务器的性能

    【IT168 服务器学院】测试与提高性能

    Apache服务器已经被设计得尽可能的快,即使你用一台配置不高的机器,用不着进行太复杂的设置,它的响应内容就足以塞满以前的各种窄带连接。但随网站内容日益复杂和带宽的增加,对Apache进行优化以取得更好的性能变得日益重要起来。

    如果优化的结果仅仅是极小的性能提升那真是浪费时间。试想一下,你花了好几个小时甚至几天调整Apache的各种参数但结果仅是几个百分点的性能提升?因此,在优化前你做的第一步应该是测试你目前的服务器的性能水平以便决定如何优化你的服务器并衡量优化的效果。

    关于对Apache的测试我们已经不是第一次提到了(见《冲出水面》一文),如同我们以前提到的,确定到底是哪一部分导致的瓶颈往往是一件困难的事,是因为Apache本身的设置问题还是由于你使用的动态网站程序环境?关于查找是否是因为网站程序引起的问题已经超出了本文的范围,这里我们主要讲一下提高Apache服务器速度的一些通常做法以及它如何与构成WEB网站的其它组件进行交互。

    主机硬件

    Apache所在的机器与操作系统环境是对性能影响最大因素,很明显,一以368的PC与一台P4或双处理器的机器不会有同样的性能。不过,如果不涉及硬件的改变,我们可以做的最大的事是首先看一下Apache是否运行在一台专用的服务器上,如果与其它应用共用一台服务器肯定会影响服务器的性能。

    在大多数情况下,告别是对静态网站而言,内存数量是一个影响性能的关键因素,因为它决定了Apache可以缓存多少内容。它缓存的内容越多,在硬盘上读取内容的机会就越少,而存取硬盘上的特定文件是一件很费时的操作。如果你的网站主要是一些静态内容,你最好使用mod_cache选项,如果你的内存足够大,可以使用mod_mem_cache选项。

    第一个选项将信息缓存在磁盘上,当它与mod_include选项一起使用时会有很好的效果,这个选项在建立一个页面时在缓存中保存它的最终版本。使用mod_mem_cache将缓存内容保存在一个可以被所有Apache进程共享的内存堆中。

    使用更快的磁盘或进一步使用RAID可以提高Apache对磁盘文件的访问速度。注意,如果你做了下面的所有这些优化,一个硬件的(而非软件)升级方案是更好的选择。最后一个谈到的关于硬件的问题是CPU能力,这对动态内容网站的影响很大,动态内容越多要求越高。

    通过挤出Apache服务器的每一分潜力你可以让你的网站留给别人的印象大大改观,特别是对一些动态网站更是如何。这篇文章主要涉及到对Apache服务器的安装和设置如何进行优化,这也是你最有控制权的部分。

    测试与提高性能

    Apache服务器已经被设计得尽可能的快,即使你用一台配置不高的机器,用不着进行太复杂的设置,它的响应内容就足以塞满以前的各种窄带连接。但随网站内容日益复杂和带宽的增加,对Apache进行优化以取得更好的性能变得日益重要起来。

    如果优化的结果仅仅是极小的性能提升那真是浪费时间。试想一下,你花了好几个小时甚至几天调整Apache的各种参数但结果仅是几个百分点的性能提升?因此,在优化前你做的第一步应该是测试你目前的服务器的性能水平以便决定如何优化你的服务器并衡量优化的效果。

    关于对Apache的测试我们已经不是第一次提到了(见《冲出水面》一文),如同我们以前提到的,确定到底是哪一部分导致的瓶颈往往是一件困难的事,是因为Apache本身的设置问题还是由于你使用的动态网站程序环境?关于查找是否是因为网站程序引起的问题已经超出了本文的范围,这里我们主要讲一下提高Apache服务器速度的一些通常做法以及它如何与构成WEB网站的其它组件进行交互。

    主机硬件

    Apache所在的机器与操作系统环境是对性能影响最大因素,很明显,一以368的PC与一台P4或双处理器的机器不会有同样的性能。不过,如果不涉及硬件的改变,我们可以做的最大的事是首先看一下Apache是否运行在一台专用的服务器上,如果与其它应用共用一台服务器肯定会影响服务器的性能。

    在大多数情况下,告别是对静态网站而言,内存数量是一个影响性能的关键因素,因为它决定了Apache可以缓存多少内容。它缓存的内容越多,在硬盘上读取内容的机会就越少,而存取硬盘上的特定文件是一件很费时的操作。如果你的网站主要是一些静态内容,你最好使用mod_cache选项,如果你的内存足够大,可以使用mod_mem_cache选项。

    第一个选项将信息缓存在磁盘上,当它与mod_include选项一起使用时会有很好的效果,这个选项在建立一个页面时在缓存中保存它的最终版本。使用mod_mem_cache将缓存内容保存在一个可以被所有Apache进程共享的内存堆中。

    使用更快的磁盘或进一步使用RAID可以提高Apache对磁盘文件的访问速度。注意,如果你做了下面的所有这些优化,一个硬件的(而非软件)升级方案是更好的选择。最后一个谈到的关于硬件的问题是CPU能力,这对动态内容网站的影响很大,动态内容越多要求越高。

    服务器设置

    如果你的环境已经建立Apache也已经经过优化,就可以查看你的设置文件来进行下一步的优化措施。一个好的方法就是简化你的设置文件将文件中的指示(directives)减少到几百行内,首先是删除掉那些注释行,进而删除任何非必要的内容。

    简化设置文件

    第一步是简化设置设置文件,它并不带来任何直接的性能提升,但它将使设置文件易于使用减少你出错的机会。

    在进行优化之前,从一个默认提供的设置文件开始是一个不错的主意。这些文件常被放在Apache的设置目录中,文件名为 httpd.conf.orig或者 httpd-std.conf,不要使用如performance-std.conf类似名称的文件,从长远的观点看,如果你准备在里面加入大量的附加设置信息,它决不是一个好起点。另一方面,如果你的目标是建立一个很快的静态WEB服务器,这可能是让服务器运行起来的最简单方法。

    如果你熟悉Apache的设置指示用法或乐意浏览帮助文件,你可以从设置文件中删除所有的注释内容,因为它们经常让实际的指示内容变得难找,你也可以删除对当前平台上用不到的多处理机方式(MPM)的引用。

    禁用模块

    现在,我们已经得到了一个清爽的设置文件,下面我们可以开始删除其中我们系统用不到的元素,特别是:

    ●HostnameLookups(主机名查找),这增加了处理每个请求的开销,首先,服务器会对DNS系统做一个反向查询以找出客户系统的主机名,然后又进行正向查询看获得的主机名是否真实指向客户的IP。大多数情况下,你可以简单的关闭这个功能,如果你经常处理服务器日志,这个工作完全可以在以后进行。你可以通过在设置文件中加入指示HostnameLookups off来关闭这个功能。

    ●符号连接。当打开这个选项时,Apache将检查每个请求中是否包含对符号连接的引用,这将对请求中包含的每个路径调用一次lstat()系统调用。除非你准备使用符号连接,否则用 Options -FollowSymLinks 来关掉它。

    ●服务器状态信息。尽管这对测试与监控服务器很有用,但它也为服务器带来了额外的开销,你可以通过寻找任何类似SetHandler server-status的指示来关闭,如果可能,你可以在安装Apache时移除这个模块。

    ●在可以更精确的时候尽可能不要使用通配符之类的灵活选项,例如,对于DirectoryIndex指示,明确的指定设置文件列表,最常用的放在最前。

    ●除非你有很好的理由否则就允许CGI的执行,将似有的CGI文件放到一个特定的目录并为之设定正确的权限,这避免了Apache对每一个请求都要判断一次要求的是一个静态文件还是一个动态文件。

0
相关文章