设为首页 收藏本站
查看: 1132|回复: 0

[经验分享] Apache服务器中prefork和worker工作模式

[复制链接]

尚未签到

发表于 2018-11-23 07:37:18 | 显示全部楼层 |阅读模式
  1.PMP
  MPM(Multi -Processing Modules,多路处理模块)是Apache2.x中影响性能的最核心特性。
  是Apache 2.x才支持的一个可插入的并发模型,在编译的时候,我们只可以选择一个并发模型。
  Unix/Linux支持三种MPM,Prefork,worker,event
  2.Prefork:
# prefork MPM
判断是否有prefork.c这个模块,有就生效,否则无效
StartServers       8 默认启动的工作进程数
MinSpareServers    5 最少空闲进程数
MaxSpareServers   20 最大空闲进程数
ServerLimit      256 最大活动进程数
MaxClients       256 最多允许发起的请求连接数
MaxRequestsPerChild  4000 每个子进程在生命周期能服务的最多请求数
  

root      1898  0.0  0.3 186356  17:23   0:00 /usr/sbin/httpd :这是主进程
apache    1901  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd :这些和以下的都是子进程
apache    1902  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd
apache    1903  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd
apache    1904  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd
apache    1905  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd
apache    1906  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd
apache    1907  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd
apache    1908  0.0  0.2 186488  17:23   0:00 /usr/sbin/httpd     Prefork是一个进程处理一个请求,在启动httpd的时候,如果选择的是这种模式,会首先创建一个主进程(控制进程)和StartServers个子进程,如代码段2,可以看到StartServers为8个.由于进程和进程之间是独享内存的,所以一个进程崩溃了不会影响到其他的进程,所以Prefork模式的稳定性比较好,但是进程多了消耗的内存会比较大.
  主进程在创建了StartServers个子进程后,为了满足MinSpareServer的设置需求,会先创建一个进程,等待一秒,创建二个进程,再等待一秒,创建四个进程....以几何数增加创建的进程,最多达到每秒创建32个,直到满足MinSpareServer的设置(可以看到以下的MinSpareServer为5),这就是预派生(Prefork)的由来,这样不必等到有请求到来时才花时间创建新的进程,提高了系统响应速度以增加性能.
  MaxSpareServers是最大空闲进程数,如果你的最大空闲进程数超过了这个数,Apache会自动kill掉多余的进程,如果这个值设置的比MinSpareServer小,Apache会自动调整该值为MinSpareServer+1.
  ServerLimit:当前服务器上最多有多少个活动的进程数

  Maxclient:并发请求的最大数,这个要小于等于ServerLimit,这个是对Apache性能影响很大的一个参数,理论上来说这个值越大,性能就越好.
  MaxRequestsPerChild:每个子进程在处理MaxRequestsPerChild个请求后销毁
  3.worker
  
如果有这个模块就启用
StartServers         4 启动的子进程数
MaxClients         300 并发请求最大数
MinSpareThreads     25 最小空闲线程数
MaxSpareThreads     75 最大空闲线程数
ThreadsPerChild     25 每个子进程可生成的线程数
MaxRequestsPerChild  0 每个子进程可服务的最大请求数,0表示不限制
  
root     25348  1.0  0.4 186560  4152 18:32   0:00 /usr/sbin/httpd.worker 主进程(控制进程)
apache   25352  2.0  0.5 596356  5372 18:32   0:00 /usr/sbin/httpd.worker 子进程
apache   25353  2.1  0.5 530820  5368 18:32   0:00 /usr/sbin/httpd.worker 子进程
apache   25369  1.5  0.5 530820  5372 18:32   0:00 /usr/sbin/httpd.worker 子进程  worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,每个线程处理一个请求,线程是共享内存空间的,所以一个线程崩溃会导致在这个进程下的所有线程都崩溃,所以他的稳定性没有Prefork好,但是内存使用率比Prefork低。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。
  MinSpareThreads和MaxSpareThreads的最大缺省值分别是25和75。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。
  ThreadsPerChild是worker 中影响性能最重要的一个指标,Worker模式下所能同时处理的请求总数是由StartServers总数乘以ThreadsPerChild的值决定的,应该大于等于MaxClients,这里系统缺省值不知道为什么设置成这样,待我去问问????
  累了..休息休息....




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638408-1-1.html 上篇帖子: Apache CloudStack: Mailing Lists 下篇帖子: Apache 禁止未授权域名指向
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表