教你怎样来优化Apache服务器的性能

测试和提高性能

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

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

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

  主机硬件

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

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

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

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

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

  测试和提高性能

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

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

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

  主机硬件

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

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

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

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

  服务器设置

  如果你 环境已经建立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模块是平台相关 对于Unix、Windows 、BeOS、和NetWare有区别 解决方案 些平台有不止 个方案可以选择对大多数用户而言 对于特定平台 默认设置已经工作得很好 而精确调整这些参数是 个费时 工作不过如果你想最大限度 挖掘Apache 潜力 你必须调整这些设置

  对大多数平台而言 只有 种MPM可选 不过在UNIX下则有两个选项:prefork和worker prefork模式生成多个相同 Apache进程 而worker模式创建多个线程通常而言 对于只有 到两颗处理器 系统 prefork模式工作得更好 而对于拥有更多处理器 系统 线程模型工作得更有效率

  不管哪种情况 MaxClients指示是最有效 提高服务器性能 思路方法 它控制了Apache可以处理 最大并发连接数

  优化静态内容

  如果你 WEB服务器使用了大量静态内容或者你分别用两个WEB服务器处理动态和静态内容 那么你现在 主要目标就是缩短服务器发送被请求内容 响应时间 最简单 思路方法就是使用mod_cache缓存Cache模块你可以使用mod_disk_cache和mod_mem_cache来分别提供基于磁盘 缓存Cache和基于内存 缓存Cache

  你可以查看有关mod_cache 介绍说明文件以取得进 信息

  优化动态内容

  动态内容可能是所有WEB服务器中最消费时间 部分 特别是使用CGI 时候 个简单 都可能会把响应时间增加好几秒

  使用基于脚本 方案 大好处是它们在Apache里装入了解释器 这就减少了执行时再装入解释器 时间 些方案还把解析过 脚本缓存Cache起来 这样下 次遇到同样 请求就可以直接执行而无需再次解析

  对特定系统 调整优化很复杂而且很花时间 而且你需要调整特定 脚本以利用优化 成果

  不过对动态内容 优化效果是非常明显 仅仅是把perl脚本 执行模式从CGI转到mod_perl就可以减少多达70% 执行时间 如果我们进 还可以使用到数据库 持久连接或在多次请求的间缓存Cache信息 这对电子商务网站WebSite非常有用 它也减小了区别请求间重复装载信息 开销

  整理总结

  尽管Apache是 个高可定制 功能强大且相当复杂 服务器软件Software 我们很有兴趣 注意到即使是Apache 标准安装也可以得到不错 性能调整Apache 设置参数是 个可以轻易显著提高服务器性能 思路方法但不幸 常常我们在Apache里最无法控制 内容--例如网站WebSite 动态内容脚本和CGI是影响网站WebSite性能 最重要方面 如果你管理 个典型 Apache服务器你会发现Apache响应 个传入连接以及最后把内容发送给客户 所花费 时间是以毫秒记 而等待所需数据资源 时间常常达到几秒钟

  当然 这并不是说我们 优化工作没什么意义 优化 效果日积月累也不可小视另外 重要 通过简化你 设置文件 你可以大大减小服务器 管理负担

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值