Apache的prefork模式和worker模式_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、apache的prefork模式和worker模式prefork模式这个多路处理模块(mpm)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于apache 1.3。它适合于没有线程平安库,需要避开线程兼容性问题的系统。它是要求将每个哀求互相自立的状况下最好的mpm,这样若一个哀求浮现问题就不会影响到其他哀求。 这个mpm具有很强的自我调整能力,只需要很少的配置命令调节。最重要的是将maxclients设置为一个足够大的数值以处理潜在的哀求高峰,同时又不能太大,以致需要用法的内存超出物理内存的大小。 worker模式此多路处理模块(mpm)使网络服务器支持混合的多线程多进程。因为用

2、法线程来处理哀求,所以可以处理海量哀求,而系统资源的开销小于基于进程的mpm。但是,它也用法了多进程,每个进程又有多个线程,以获得基于进程的mpm的稳定性。 控制这个mpm的最重要的命令是,控制每个子进程允许建立的线程数的threadsperchild命令,和控制允许建立的总线程数的maxclients命令。 !- prefork和worker模式的切换1.将当前的prefork模式启动文件改名 httpd.prefork2.将worker模式的启动文件改名mv httpd.worker httpd3.修改apache配置文件vi /usr/local/apache2/conf/a/httpd

3、-mpm.conf找到里边的如下一段,可适当修改负载等参数: ifmole mpm_worker_module startservers 2maxclients 150minsparethreads 25maxsparethreads 75threadsperchild 25maxrequestsperchild 0 /ifmodule 4.重新启动服务/usr/local/apache2/bin/ restart即可换成worker方式启动apache2 处于稳定性和平安性考虑,不建议更换apache2的运行方式,用法系统默认prefork即可。另外无数模块不能工作在worker模式下,例如

4、rhat linux自带的php也不能支持线程平安。所以最好不要切换工作模式。 prefork和worker模式的比较prefork模式用法多个子进程,每个子进程惟独一个线程。每个进程在某个确定的时光只能维持一个衔接。在大多数平台上,prefork mpm在效率上要比worker mpm要高,但是内存用法大得多。prefork的无线程设计在某些状况下将比worker更有优势:它可以用法那些没有处理好线程平安的第三方模块,并且对于那些线程调试困难的平台而言,它也更简单调试一些。 worker模式用法多个子进程,每个子进程有多个线程。每个线程在某个确定的时光只能维持一个衔接。通常来说,在一个高流量

5、的http服务器上,worker mpm是个比较好的挑选,由于worker mpm的内存用法比prefork mpm要低得多。但worker mpm也由不完美的地方,假如一个线程崩溃,囫囵进程就会连同其全部线程一起"死掉".因为线程分享内存空间,所以一个程序在运行时必需被系统识别为"每个线程都是平安的"。 总的来说,prefork方式速度要稍高于worker,然而它需要的u和memory资源也稍多于woker。 prefork模式配置详解 ifmodule mpm_prefork_module serverlimit 256startservers 5m

6、inspareservers 5maxspareservers 10maxclients 256maxrequestsperchild 0 /ifmodule serverlimit默认的maxclient最大是256个线程,假如想设置更大的值,就的加上serverlimit这个参数。20000是serverlimit这个参数的最大值。假如需要更大,则必需编译apache,此前都是不需要重新编译apache。生效前提:必需放在其他命令的前面 startservers指定服务器启动时建立的子进程数量,prefork默认为5。 minspareservers指定空闲子进程的最小数量,默认为5。假如

7、当前空闲子进程数少于minspareservers ,那么apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。 maxspareservers设置空闲子进程的最大数量,默认为10。假如当前有超过maxspareservers数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。假如你将该命令的值设置为比minspareservers小,apache将会自动将其修改成"minspareservers+1"。 maxclients限定同一时光客户端最大接入哀求的数量(单个进程并发线程数),默认为256。任何超过maxclients限制的哀求都将进

8、入迎候队列,一旦一个链接被释放,队列中的哀求将得到服务。要增大这个值,你必需同时增大serverlimit。 maxrequestsperchild每个子进程在其生存期内允许伺服的最大哀求数量,默认为10000.到达maxrequestsperchild的限制后,子进程将会结束。假如maxrequestsperchild为"0",子进程将永久不会结束。将maxrequestsperchild设置成非零值有两个益处:1.可以防止(偶然的)内存泄漏无限举行,从而耗尽内存。2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候削减活动进程的数量。 worker模式配置详解 if

9、module mpm_worker_module startservers 2maxclients 150minsparethreads 25maxsparethreads 75threadsperchild 25maxrequestsperchild 0 /ifmodule startservers服务器启动时建立的子进程数,默认值是"3"。 maxclients允许同时伺服的最大接入哀求数量(最大线程数量)。任何超过maxclients限制的哀求都将进入迎候队列。默认值是"400",16(serverlimit)乘以25(threadsperchil

10、d)的结果。因此要增强maxclients的时候,你必需同时增强serverlimit的值。 minsparethreads最小空闲线程数,默认值是"75"。这个mpm将基于囫囵服务器监视空闲线程数。假如服务器中总的空闲线程数太少,子进程将产生新的空闲线程。 maxsparethreads设置最大空闲线程数。默认值是"250"。这个mpm将基于囫囵服务器监视空闲线程数。假如服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。maxsparethreads的取值范围是有限制的。apache将根据如下限制自动修正你设置的值:worker要求其大于等于minsparethreads加上threadsperchild的和。 threadsperchild每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。 maxrequestsperchild设置每个子进程在其生存期内允许伺服的最大哀求数量。到达maxrequestsperchild的限制后,子进程将会结束。假如maxrequestsperchild为"0",子进程将永久不会结束。将maxrequestsp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论