测试和提高性能
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响应
个传入连接以及最后把内容发送给客户
所花费
时间是以毫秒记
而等待所需数据资源
时间常常达到几秒钟
当然 这并不是说我们
优化工作没什么意义
优化
效果日积月累也不可小视另外
重要
是
通过简化你
设置文件
你可以大大减小服务器
管理负担