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

[经验分享] Apache Multipath Processing Module

[复制链接]

尚未签到

发表于 2018-11-23 06:45:51 | 显示全部楼层 |阅读模式
  废话不多说直接上图:
      prefork模型

   DSC0000.jpg
  


StartServers       8   # 默认启动的工作进程数;
MinSpareServers    5  # 最少空闲进程数;
MaxSpareServers   20  # 最大空闲进程数;
ServerLimit      256   # 最大活动进程数;
MaxClients       256  # 并发请求的最大数;
MaxRequestsPerChild  4000 # 每个子进程在生命周期内所能够服务的最多请求个数;
  

    prefork采用的是预派生子进程方式,用子进程处理不同的请求, 每个请求对应一个子进程,进程之间是彼此独立的。当apache启动后会先启动StartServers个子进程,等待1秒后会再创建两个,再等待1秒后创建4,再一秒后创建8个这样直到创建满MinSpareServers个子进程为止,那么此时MinSpareServers个子进程会待命,这种待命模式不必在新请求到来时重新创建, 一定程度上加快了进程的响应速度。每个子进程占用内存25M内存,如果我记得没有错的话,特点以: 稳定著称

# service httpd start
# ps -elHF | grep httpd
1 S root      2635     1  0  80   0 - 46071 poll_s  3840   0 07:55 ?        00:00:00   /usr/sbin/httpd
5 S apache    2638  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd
5 S apache    2639  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd
5 S apache    2640  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd
5 S apache    2641  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd
5 S apache    2642  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd
5 S apache    2643  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd
5 S apache    2644  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd
5 S apache    2645  2635  0  80   0 - 46071 inet_c  2436   0 07:55 ?        00:00:00     /usr/sbin/httpd

apache Worker模型
DSC0001.jpg

StartServers         4   # 默认启动的工作进程数;                           
MaxClients         300  #  并发请求的最大数;               
MinSpareThreads     25  #  最小空闲线程数;
MaxSpareThreads     75  #最大空闲线程数;
ThreadsPerChild     25  #  每个子进程可生成的线程数;
MaxRequestsPerChild  0  #每个子进程在生命周期内所能够服务的最多请求个数,0表示不限定;
                  worker 模型相对于prefork模型来说就相对没那么稳定了,因为worker是基于线程工作的,在线程的环境下,如下图所示:同一个进程的中的多个线程的资源是共享的,如果用户请求的资源,由一个线程回应,如果这个线程奔溃了,那么这个进程中共享资源的线程就全军覆没啦.
   DSC0002.jpg

  切换为worker模型:这里为什么是三个呢?因为这是红帽特别设置的,也许红帽认为这样设置更适合现在的应用场景吧!

  
# vim /etc/sysconfig/httpd
# grep '^HTTPD' /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker
# ps -elHF | grep httpd  
1 S root      2720     1  0  80   0 - 46122 poll_s  4044   0 08:12 ?        00:00:00   /usr/sbin/httpd.worker
5 S apache    2723  2720  0  80   0 - 132187 pipe_w 3288   0 08:12 ?        00:00:00     /usr/sbin/httpd.worker
5 S apache    2724  2720  0  80   0 - 132187 pipe_w 3292   0 08:12 ?        00:00:00     /usr/sbin/httpd.worker
5 S apache    2726  2720  0  80   0 - 132187 pipe_w 3296   0 08:12 ?        00:00:00     /usr/sbin/httpd.worker  

  Apache event 模型;
   DSC0003.jpg
  Apache event一个线程响应多个请求,event-driven: 事件驱动,主要目的在于实现单线程响应多个请求;event,为什么能够一个线程能够详细多个用户请求呢?它其实是基于网络I/O模型中的I/O复用去实现的,什么是网络I/O复用?这里比较复杂,所以我们会专门写一篇关于网络I/O模型,以及磁盘I/O模型的博客.httpd2.4.9中开始正式采用这种基于事件的模型.所以想用最新的特性,最新的功能就必须编译安装,你懂得; event每一个进程占用内存的空间很大.使用场景比如说淘宝,百度每天的请求都是海量的.你懂的,前两种模型就不是很适合这种高并发请求的应用场景.
  

  
  httpd-2.4 编译安装
  依赖于更高版本的aprapr-utilapr全称为apache portable runtime
  (1) 解决依赖关系,(2) 编译安装apr-1.5.0 (3) 编译安装apr-util-1.5.2 (4) httpd编译安装 --with-mpm=event
#yum -y install pcre-devel  
#tar xf apr-1.5.0.tar.bz2
#cd apr-1.5.0
#./configure --prefix=/usr/local/apr
#make && make install
#tar xf apr-util-1.5.2.tar.bz2
#cd apr-util-1.5.2
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
#make && make install  
# tar xf httpd-2.4.9.tar.bz2
# cd httpd-2.4.9
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=event
# make && make install  
     Apache 2.4.9 配置文件采用的是模块化分散的机制;httpd编译安装默认的用户就是daemon;
  
# ls
extra  httpd.conf  magic  mime.types  original  
[root@localhost extra]# ls
httpd-autoindex.conf  httpd-info.conf       httpd-mpm.conf                 httpd-userdir.conf
httpd-dav.conf        httpd-languages.conf  httpd-multilang-errordoc.conf  httpd-vhosts.conf
httpd-default.conf    httpd-manual.conf     httpd-ssl.conf                 proxy-html.conf
StartServers             3 :# 启动的子进程的个数
MinSpareThreads         75 :# 最小空闲线程数
MaxSpareThreads        250 : # 最大空闲线程数
ThreadsPerChild         25 :# 每个子进程可生成的线程数
MaxRequestWorkers      400 :# 最大数量的工作线程数
MaxConnectionsPerChild  0 :# 每个子进程能够处理的最大连接数,0表示不限定;
# ps -elFH | grep httpd
1 S root      1604     1  0  80   0 - 19241 poll_s  2380   0 10:21 ?        00:00:01   /usr/local/apache/bin/httpd
5 S daemon    1606  1604  0  80   0 - 105306 pipe_w 2244   0 10:21 ?        00:00:03     /usr/local/apache/bin/httpd
5 S daemon    1608  1604  0  80   0 - 105306 pipe_w 2244   0 10:21 ?        00:00:03     /usr/local/apache/bin/httpd
5 S daemon    1609  1604  0  80   0 - 105306 pipe_w 2248   0 10:21 ?        00:00:04     /usr/local/apache/bin/httpd  





运维网声明 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-638370-1-1.html 上篇帖子: Apache配置shtml 下篇帖子: redhat5.8+apache+ldap(提供软件包)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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