积木首页 | 500多种网页特效 | 函数手册 | 广播电台 | 高清晰图片素材 | 服务器合租 | 万年历 | 网友最新浏览记录
程序开发 网页设计 搜索引擎 特效代码 操作系统 防范病毒 黑客技术 图形图象 电脑硬件 网络技术 服 务 器 数 据 库 网文精粹
您的位置:积木首页 >> 服务器频道 >> Win服务器 >> 正文:
标题:Apache 性能最优化分析(13)
时间:2004-7-24 来源:不详 浏览数:
附录:预分支(Pre-Forking)模型

  Unix上的Apache是应用了预分支模型的服务器。父进程的责任仅在于繁衍子进程,它从不响应来自socket的任何请求。真正处理连接的是子进程,每个子进程在终止之前会(逐一地)为多个连接服务。父进程根据服务器负载的变化(通过监视记分板,记分板由子进程负责保持同步)生成新的或者杀掉旧的子进程。

  这种模型为服务器提供了其他模型所不具备的健壮。父进程的代码非常简单,它有足够的信心保证在不出现错误的情况下持续运行。子进程就很复杂了,而且当您加入了第三方提供的模块后,将冒segmentation fault和其他崩溃的危险。即便这样的事情发生了,也只会影响到一个连接。父进程将继续为请求服务,并迅速替换掉已经死亡的子进程。

  预分支在不同的Unix之间有良好的可移植性。Apache向来将它作为重要的目标之一,并且将保持下去。

  但预分支模型由于各种各样的性能问题而饱受批判。主要的因素是分支进程带来的负担、上下文切换带来的负担和多个进程为内存带来的负担。另外它不能为请求提供有效的缓存机制(比如mmap文件池)。另有一些模型。JAWS project的论文对它们进行了详细的分析。实际上,所有这些模型带来的性能损失在不同操作系统上的差别迥异。

  Apache的内核代码已经支持多线程。NT上的Apache 1.3就是多线程的。至少有另外两种实验性的多线程Apache:一个基于1.3内核并运行在DCE上;另一个基于1.0内核,它使用了一套自定义的用户级线程库。它们都不是对公众发行的。有一个已经发行了的Apache实验版本:运行于Netscape运行时可移植(Portable Run Time)平台上的1.3版,可以在此下载(如果您准备使用它的话,欢迎您加入new-httpd邮件列表)。被重新设计的Apache2.0将包含抽象化的服务器模型,它使我们可以既支持预分支模型,又支持多种线程模型。


(责任编辑:欣欣裴)
关于本站 | 广告服务 | 联系我们 | 版权申明 | 强强联盟 | 投稿热线 | 网站地图 | 申请链接
Copyright ©2005-2006 Gimoo.net All rights reserved. 积木网 版权所有
E-mail:gimoohr@gmail.com 京ICP备05050695号