远程协助
当前位置:重庆拓磊计算机运营维护中心 > 文档中心 > 操作系统 >
标题:Apache 性能最优化分析(13)_Windows教程重庆网络存储服务器    日期:2019-11-11
附录:预分支(Pre-Forking)模型

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

  这种模型为服务器提供了其他模型所不具备的健壮。父进程的代码非常简单,它有足够的信心保证在不出现错误的情况下持续运行。子进程就很复杂了,而且当您加入了第三方提供的模块后,重庆IT外包收费,将冒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将包含抽象化的服务器模型,它使我们可以既支持预分支模型,又支持多种线程模型。

重庆IT外包
下一篇:构建安全的e-commerce服务器(2)_Windows教程重庆数据加密

联系我们
  • 客服热线:023-63522929(7 x 24h)
  • 在线客服:
  • 微信公众号 官方微博