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

[经验分享] Apache 工作模式的优化深入

[复制链接]

尚未签到

发表于 2018-11-17 11:26:50 | 显示全部楼层 |阅读模式
  Apache 2.X  支持插入式并行处理模块,称为多路处理模块(MPM)。在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到apache的速度和可伸缩性。
  Prefork MPM : 这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
  这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。
  Worker MPM : 此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
  每个进程可以拥有的线程数量是固定的。服务器会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子进程的建立。每个子进程可以建立ThreadsPerChild数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。
  不管是Worker模式或是Prefork 模式,Apache总是试图保持一些备用的(spare)或者是空闲的子进程(空闲的服务线程池)用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生。
  总的来说 prefork方式速度要稍高于 worker, 然而它需要的CPU 和memory 资源也稍多于worker。
  

           **下面将对   Prefork MPM  、Worker MPM  这两种工作模式的配置介绍下 **  

首先编译安装Apache服务
  

            # tar xzvf httpd-2.4.2.tar.gz -C /opt  # tar xzvf apr-1.4.6.tar.gz -C /opt  (支持Apache上层应用跨平台,提供底层接口库)
  # tar xzvf apr-util-1.4.1.tar.gz -C /opt
  # cp -R apr-1.4.6/ /opt/httpd-2.4.2/srclib/apr
  # cp -R apr-util-1.4.1/ /opt/httpd-2.4.2/srclib/apr-util
  # yum install gcc gcc-c++ make pcre pcre-devel -y      //安装环境 (pcre : 一个Perl库,支持正则表达式)
  # yum install zlib-devel -y
  

  .
  

            # cd /opt/httpd-2.4.2  # ./configure \
  --prefix=/usr/local/httpd \
  --enable-deflate \
  --with-mpm=prefork \                           //选择为prefork工作模式
  --enable-expires \
  --enable-so \
  --enable-rewrite \
  --enable-charset-lite \
  --enable-cgi
  

  .
  

            # make && make install  # grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd
  # vi /etc/init.d/httpd 在文件最前面插入下面的
  #!/bin/sh
  # chkconfig:2345 85 15
  # description:Apache is a World Wide Web server.
  

  .
  

            # chmod +x /etc/init.d/httpd  # chkconfig --add httpd
  # chkconfig --list httpd
  # chkconfig --level 35 httpd on    //开机自启动
  # ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf    //生成软连接方便管理朱配置文件
  # vim /etc/httpd.conf(设置主配置文件)
  ServerName www.benet.com:80
  Listen 192.168.100.102:80
  #Listen 80       //注释该行
  

  .

prefork模式
  

    # vim /etc/httpd.conf  Include conf/extra/httpd-mpm.conf      //去# 启用httpd-mpm.conf 文件
  # vim /usr/local/httpd/conf/extra/httpd-mpm.conf
  

  
StartServers                     10      # 启动时进程数
  
MinSpareServers             10      # 最小空闲进程数
  
MaxSpareServers            50      # 最大空闲进程数
  
MaxRequestWorkers      150     # 最大并发进程数
  
MaxConnectionsPerChild   0     # 最大连接数限制
  

  

  .
  

    # /usr/local/httpd/bin/httpd -l    //查看当前工作模式  

DSC0000.jpg

  

# lsof -i:80     //查看Apache 进程运行的情况  

DSC0001.jpg

  .

worker模式
  

     编译安装Apache  下面编译工作模式指定为 --with-mpm=worker  其他安装步骤参考上面
  # cd /opt/httpd-2.4.2
  # ./configure \
  --prefix=/usr/local/httpd \
  --enable-deflate \
  --with-mpm=worker \                           //选择为worker工作模式
  --enable-expires \
  --enable-so \
  --enable-rewrite \
  --enable-charset-lite \
  --enable-cgi
  

  .       .
  

# vim /usr/local/httpd/conf/extra/httpd-mpm.conf  
  
StartServers                      2        #启动时进程数
  
MinSpareThreads             25      #最小空闲线程数
  
MaxSpareThreads           75       #最大空闲线程数
  
ThreadsPerChild              25       #每个进程可以启动的线程数量
  
MaxRequestWorkers       150     #线程数量最大值
  
MaxConnectionsPerChild   0      #最大连接数限制
  
ThreadLimit                      64      #每个进程可以启动的线程数量上限值
  




运维网声明 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-636169-1-1.html 上篇帖子: Apache 配置——日志分割及使用AWStats日志分析 下篇帖子: 部署Apache网站服务以及访问控制的实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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