频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

怎样优化Apache服务器的性能

来源: 作者: 出处:巧巧读书 2006-09-02 进入讨论组
QQRead:http://www.qqread.com/network/server/e241587.html

测试与提高性能

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对每一个请求都要判断一次要求的是一个静态文件还是一个动态文件。

禁用日志

写入日志信息是一个很花费时间的工作,尽管Apache保持日志文件的打开状态以节省打开文件的时间,但仍然得花费不少的时间。如果没有必要存储日志信息,你可以关闭这个选项以节省出更多的处理器时间,只需要在设置文件中把日志那一行注释掉就可以关掉它。

如果必须保留日志,你可以关闭HostnameLookups选项(见上文)然后把日志文件拷备到另一台机器上做进一步分析。

简化目录级的设置

htaccess文件可以极大的扩展Apache的设置参数,而无需每次你改变设计都要编辑Apache主设置文件,但对这个文件的使用也降低了服务器的性能。

如果使用这个文件,Apache必需首先在当前目录中查找是否存在这个文件,如果存在就解析这个文件并在当前目录中应用文件中的设置。更坏的是,Apache不仅要查看当前的目录,还要查看当前目录的所有上层目录是否包括htaccess文件以根据所有这些文件最终确定设置。

如果你想最优化服务器的性能,你应该禁止使用htaccess文件,任何基本目录的设置都可以在主设置文件中进行,而主设置文件仅在服务器启动时解析一次。为了禁用htaccess文件,在任何节里加上指示AllowOverride None。

多处理方式设置

多处理方式(Multi-Processing Module/MPM)他允许特定平台处理多个并发连接。MPM模块是平台相关的,对于UnixWindows、BeOS、和NetWare有不同的解决方案,一些平台有不止一个方案可以选择。对大多数用户而言,对于特定平台的默认设置已经工作得很好,而精确调整这些参数是一个费时的工作。不过如果你想最大限度的挖掘Apache的潜力,你必须调整这些设置。

对大多数平台而言,只有一种MPM可选,不过在UNIX下则有两个选项:prefork与worker,prefork模式生成多个相同的 Apache进程,而worker模式创建多个线程。通常而言,对于只有一到两颗处理器的系统,prefork模式工作得更好,而对于拥有更多处理器的系统 更多文章 更多内容请看FTP服务器双核服务器技术网站服务器的选型专题,或进入讨论组讨论。

收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章