优化Apache服务器的性能

##注:这篇文章对apache的优化说的思路比较清晰,本人以为很是好,故转载,但愿对你们有所帮助,文章中的内容请本身甄别!!!!html

 文章出处:http://bbs.chinabyte.com/thread-394880-1-1.html数据库

     经过挤出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能力,这对动态内容网站的影响很大,动态内容越多要求越高。
主机环境
无论是使用何种操做系统,下面这些原则都是适用的:
●尽量减小非必要的后台运行的程序数目。若是你真的很关心服务器性能,你甚至能够关闭一些一般被认为是必要的后台服务。好比在UNIX下面,你能够 关闭NFS服务,任何打印服务甚至邮件发送服务(若是不使用这些服务),在Windows系统下,使用控制面板优化系统和缓存,固然,对于必要的服务(如 MySQL)仍然须要运行。
●避免使用系统。若是在服务器运行时你利用它进行其它工做(如编译软件,编辑文件或配置机器)你必将下降服务器提供的性能。若是你必须在上面安装一些组件,你能够在其它机器上编译好后拷备到服务器上。
●让你的系统组件维持在最新。虽然这主要是从安全角度的建议,不过软件补丁每每提供了网络和I/O方面的性能提高。
Apache程序
下面,就谈到Apache自己了。
首先你确认一下是否Apache在编译时是否仅包含了你的网站须要的组件。这意味着,你能够忽略一些用不着的组件。这使它占用的内存更少,并且,它也表示你不用意外的激活一些选项下降服务器的性能。
静态仍是动态
灵活性常是一些Apache管理员考虑的主要因素,但灵活性也有代价,使用动态载入模块很是方便,但它将致使性能降低,由于在须要时模块才会被载入。不过动态模块也有利于减小服务器对内存的需求。
为了装Apache安装成静态模式,使用设置脚本定义你须要的模块,可是不要将它们定义为共享的(例如:使用--enable-rewrite而不要用--enable-rewrite=shared,也不要用共享选项--enable-so)。
模块设置
若是你使用Apacher的静态模式,你必须当心选项载入的模块,这是静态模式带来的一个开销--载入的模块越多,占用的内存越大,对于使用分叉多线程模型的程序这个效果更是明显。
注意一些项目是被自动包含的,所以你须要显式的指定包含或禁用须要的模块。另外要记住若是须要包含进来一些如认证,PHP或mod_perl这样的第 三方模块,你须要WEB服务(Web service),使用con**ure -help命令来查看可使用的选项列表。
服务器设置
若是你的环境已经创建Apache也已经通过优化,就能够查看你的设置文件来进行下一步的优化措施。一个好的方法就是简化你的设置文件将文件中的指示(directives)减小到几百行内,首先是删除掉那些注释行,进而删除任何非必要的内容。
简化设置文件
第一步是简化设置设置文件,它并不带来任何直接的性能提高,但它将使设置文件易于使用减小你出错的机会。
在进行优化以前,从一个默认提供的设置文件开始是一个不错的主意。这些文件常被放在Apache的设置目录中,文件名为 httpd.conf.orig或者 httpd-std.conf,不要使用如performance-std.conf相似名称的文件,从长远的观点看,若是你准备在里面加入大量的附加设 置信息,它决不是一个好起点。另外一方面,若是你的目标是创建一个很快的静态WEB服务器,这多是让服务器运行起来的最简单方法。
若是你熟悉Apache的设置指示用法或乐意浏览帮助文件,你能够从设置文件中删除全部的注释内容,由于它们常常让实际的指示内容变得难找,你也能够删除对当前平台上用不到的多处理机方式(MPM)的引用。
禁用模块
如今,咱们已经获得了一个清爽的设置文件,下面咱们能够开始删除其中咱们系统用不到的元素,特别是:
●HostnameLook**(主机名查找),这增长了处理每一个请求的开销,首先,服务器会对DNS系统作一个反向查询以找出客户系统的主机名,然 后又进行正向查询看得到的主机名是否真实指向客户的IP。大多数状况下,你能够简单的关闭这个功能,若是你常常处理服务器日志,这个工做彻底能够在之后进 行。你能够经过在设置文件中加入指示HostnameLook** off来关闭这个功能。
●符号链接。当打开这个选项时,Apache将检查每一个请求中是否包含对符号链接的引用,这将对请求中包含的每一个路径调用一次lstat()系统调用。除非你准备使用符号链接,不然用 Options -FollowSymLinks 来关掉它。
●服务器状态信息。尽管这对测试与监控服务器颇有用,但它也为服务器带来了额外的开销,你能够经过寻找任何相似SetHandler server-status的指示来关闭,若是可能,你能够在安装Apache时移除这个模块。
●在能够更精确的时候尽量不要使用通配符之类的灵活选项,例如,对于DirectoryIndex指示,明确的指定设置文件列表,最经常使用的放在最前。
●除非你有很好的理由不然就容许CGI的执行,将似有的CGI文件放到一个特定的目录并为之设定正确的权限,这避免了Apache对每个请求都要判断一次要求的是一个静态文件仍是一个动态文件。
禁用日志
写入日志信息是一个很花费时间的工做,尽管Apache保持日志文件的打开状态以节省打开文件的时间,但仍然得花费很多的时间。若是没有必要存储日志信息,你能够关闭这个选项以节省出更多的处理器时间,只须要在设置文件中把日志那一行注释掉就能够关掉它。
若是必须保留日志,你能够关闭HostnameLook**选项(见上文)而后把日志文件拷备到另外一台机器上作进一步分析。
简化目录级的设置
htaccess文件能够极大的扩展Apache的设置参数,而无需每次你改变设计都要编辑Apache主设置文件,但对这个文件的使用也下降了服务器的性能。
若是使用这个文件,Apache必需首先在当前目录中查找是否存在这个文件,若是存在就解析这个文件并在当前目录中应用文件中的设置。更坏的 是,Apache不只要查看当前的目录,还要查看当前目录的全部上层目录是否包括htaccess文件以根据全部这些文件最终肯定设置。
若是你想最优化服务器的性能,你应该禁止使用htaccess文件,任何基本目录的设置均可以在主设置文件中进行,而主设置文件仅在服务器启动时解析一次。为了禁用htaccess文件,在任何节里加上指示AllowOverride None。
多处理方式设置
多处理方式(Multi-Processing Module/MPM)他容许特定平台处理多个并发链接。MPM模块是平台相关的,对于Unix、Windows、BeOS、和NetWare有不一样的解 决方案,一些平台有不止一个方案能够选择。对大多数用户而言,对于特定平台的默认设置已经工做得很好,而精确调整这些参数是一个费时的工做。不过若是你想 最大限度的挖掘Apache的潜力,你必须调整这些设置。
对大多数平台而言,只有一种MPM可选,不过在UNIX下则有两个选项:prefork与worker,prefork模式生成多个相同的 Apache进程,而worker模式建立多个线程。一般而言,对于只有一到两颗处理器的系统,prefork模式工做得更好,而对于拥有更多处理器的系 统,线程模型工做得更有效率。
无论哪一种状况,MaxClients指示是最有效的提升服务器性能的方法,它控制了Apache能够处理的最大并发链接数。
优化静态内容
若是你的WEB服务器使用了大量静态内容或者你分别用两个WEB服务器处理动态和静态内容,那么你如今的主要目标就是缩短服务器发送被请求内容的响应 时间,最简单的方法就是使用 mod_cache缓存模块。你可使用mod_disk_cache和mod_mem_cache来分别提供基于磁盘的缓存和基于内存的缓存。
你能够查看关于mod_cache的说明文件以取得进一步的信息。
优化动态内容
动态内容多是全部WEB服务器中最消费时间的部分,特别是使用CGI的时候,一个简单的程序均可能会把响应时间增长好几秒。
使用基于脚本的方案的一大好处是它们在Apache里装入了解释器,这就减小了执行时再装入解释器的时间,一些方案还把解析过的脚本缓存起来,这样下一次遇到一样的请求就能够直接执行而无需再次解析。
对特定系统的调整优化很复杂并且很花时间,并且你须要调整特定的脚本以利用优化的成果。
不过对动态内容的优化效果是很是明显的,仅仅是把perl脚本的执行模式从CGI转到mod_perl就能够减小多达70%的执行时间,若是咱们进一 步,还可使用到数据库的持久链接或在屡次请求之间缓存信息,这对电子商务网站很是有用,它也减少了不一样请求间重复装载信息的开销。
总结
尽管Apache是一个高可定制的功能强大且至关复杂的服务器软件,咱们颇有兴趣的注意到即便是Apache的标准安装也能够获得不错的性能。调整 Apache的设置参数是一个能够轻易显着提升服务器性能的方法。但不幸的是,经常咱们在Apache里最没法控制的内容--例如网站的动态内容脚本和 CGI是影响网站性能的最重要方面,若是你管理一个典型的Apache服务器你会发现Apache响应一个传入链接以及最后把内容发送给客户的所花费的时 间是以毫秒记的,而等待所需数据资源的时间经常达到几秒钟。
固然,这并非说咱们的优化工做没什么意义,优化的效果日积月累也不可小视。另外,重要的是,经过简化你的设置文件,你能够大大减少服务器的管理负担apache

相关文章
相关标签/搜索