让运用Apache的网站速度飞起来-1
Apache 2.0在机能上的改良最吸惹人.在支撑POSIX线程的Unix系统上,Apache可以经过议定差另外MPM运转在一种多历程与多线程相搅浑的体例下,加强');部分设置的可扩年夜机能.相比于Apache 1.3,2.0版本做了少量的优化来汲引处置处罚才具和可伸缩性,并且年夜多半改良在默许形状下即可奏效.但是在编译和运转时候,2.0也有很多可以明明进步机能的选择.
MPM(Multi -Processing Modules,多道处置处罚模块)是Apache2.0中影响机能的最地方特性.
毫不强调地说,MPM的引入是Apache 2.0最次要的变革.年夜家晓得,Apache是基于模块化的设计,而Apache 2.0更扩展了模块化设计到Web效劳器的最根底成效.效劳器装载了一种多道处置处罚模块,持续绑定本机荟萃端口、采取央求,并调节子历程来处置处罚央求.扩展模块化设计有两个次要优点:
◆ Apache可以更轻巧、有用地支撑多种操纵系统;
◆ 效劳器可以按站点的不凡需求休止自定制.
在用户级,MPM看起来和其它Apache模块奇怪很是雷同.次要区别是在随意时候只能有一种MPM被装载到效劳器中.
下面以Linux RedHat AS3为平台,演示一下在Apache 2.0中如何指定MPM.
# wget http://archive.apache.org/dist/httpd/httpd-2.0.52.tar.bz2
# tar jxvf httpd-2.0.52.tar.bz2
# cd httpd-2.0.52
# ./configure --help grep mpm
体现如下:
--with-mpm=MPM Choose the process model for Apache to use. MPM={beos worker prefork mpmt_os2 perchild leader threadpool}
上述操感导来选摘要运用的历程模子,即哪种MPM模块.Beos、mpmt_os2辞行是BeOS和OS/2上缺省的MPM, perchild次要设计目的是以差另外用户和组的身份来运转差另外子历程.这在运转多个需求CGI的编造主机时稀罕有用,会比1.3版中的SuExec 机制做得更好.leader和threadpool都是基于worker的变体,还处于实验性阶段,某些情况下并不会按照预期想象的那样义务,所以 Apache官方也并不推荐运用.是以,我们次要论述prefork和worker这两种和机能干系最年夜的产等第MPM.
prefork的义务道理
要是不必“--with-mpm”显式指定某种MPM,prefork就是Unix平台上缺省的MPM.它所接纳的预派生子历程措施也是 Apache 1.3中接纳的体例.prefork自身并没有运用到线程,2.0版运用它是为了与1.3版坚持兼容性;另一方面,prefork用零丁的子历程来处置处罚差另外央求,历程之间是彼此自力的,这也使其成为最稳固的MPM之一.
prefork的义务道理是,控制历程在最初成立“StartServers”个子历程后,为了知足MinSpareServers设置的需求创建一个历程,守候一秒钟,持续创建两个,再守候一秒钟,持续创建四个……如此按指数级添加创建的历程数,最多到达每秒32个,直到知足 MinSpareServers设置的值为止.这就是预派生(prefork)的由来.这种体例可以不必在央求到来时再孕育发生新的历程,从而减小了系统开支以添加机能.
来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2007/1011/35751.html
版权声明:
原创作品,应许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。不然将追查法律责任。