Apache工作模式介绍

  

Apache工作模式介绍

  
  

1. apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件

  

2。其工作模式有许多种,源码包安装httpd时可查看httpd-mpm.conf文件,该文件位于额外的/conf目录中

  

3。目前主要有两种模式:

  

事件模式:一个进程中包含多个线程

  

prefork模式:一个进程中包含一个线程

  

工模式:一个进程中包含多个线程

     

事件工作模式介绍:

  
  

1.事件是Apache最新的工作模式,它和工模式很像,不同的是在于它解决了维生长连接的时候占用线程资源被浪费的问题

  

2.事件工作模式在遇到某些不兼容的模块时,会失效,将会回退到工模式

  

3。事件工作模式需要Linux系统(Linux 2.6 +)对epoll的支持,才能启用。需要补充的是HTTPS的连接(SSL)

  

4。在事件工作模式中,会有一些专门的线程用来管理这些维生类型的线程

  

5。当有真实请求过来的时候,将请求传递给服务器的线程执行完毕后,又允许它释放

  

6。这样,一个线程就能处理几个请求了,实现了异步非阻塞。这增强了在高并发场景下的请求处理

     

事件参数讲解

  <编辑>在httpd-mpm.conf配置文件中,以下是prefork模块的定义:   
 <代码类=" language-shell "> & lt; IfModule mpm_event_module>
  StartServers 3
  MinSpareThreads 75
  MaxSpareThreads 250
  ThreadsPerChild 25
  MaxRequestWorkers 400
  MaxConnectionsPerChild 0
  & lt;/IfModule>  
  

参数说明:

           参数   说明               StartServers   服务启动时初始的进程数,默认3         MinSpare线程   最小的空闲子进程数,默认75         MaxSpare线程   最大的空闲子进程数,默认250         ThreadsPerChild   每个子进程产生的线程数量,默认是25         MaxRequestWorkers   限定同一时间内客户端最大接入的请求数量,默认是400         MaxConnectionsPerChild   每个子进程在其生命周期内允许最大的请求数量,如果请求总数已经达到这个数值,子进程将会结束,如果设置为0,子进程将永远不会结束。将该值设置为非0值,可以防止运行PHP导致的内存泄露            

事件优化建议

  <编辑> 1。可根据生产环境进行调试,以确定合适参数   <编辑> 2。优化参考:   
 <代码类="语言java "> & lt; IfModule mpm事件module>
  ServerLimit 1000
  StartServers 20
  MinSpareThreads 25
  MaxSpareThreads 1200
  ThreadsPerChild 50
  MaxRequestWorkers 2000
  MaxC> & lt; IfModule mpm_ prefork module>
  StartServers 20
  MinSpareServers 10
  MaxSpareServers 50
  数150
  MaxRequestsPerChild 0
  & lt;/IfModule>  
  

参数说明:

           参数   说明               ServerLimit   最大进程数         StartServers   启动的时候创建的进程数量         MinSpareServers   最少空闲进程         MaxSpareServers   最多空闲进程         数   最多创建多少个子进程用来处理请求         MaxRequestsPerChild   每个进程处理的最大请求数,达到请求数,进程即被销毁,如果设置为0,子进程永远不会结束            

prefork优化建议

  <编辑> 1。可根据生产环境进行调试,以确定合适参数   <编辑> 2。优化参考:   
 <代码类="语言java "> & lt; IfModule mpm prefork module>
  ServerLimit 1000
  StartServers 10
  MinSpareServers 10
  MaxSpareServers 30
  数1000
  MaxRequestsPerChild 5000
  & lt;/IfModule>  
  

工人工作方式

  
  

1。每个进程能够拥有的线程数量是固定的,服务器会根据负载情况增加或减少进程数量

  

2。一个单独的控制进程(父进程)负责子进程的建立。每个子进程能够建立ThreadsPerChild数量的服务线程和一个监听线程,监听线程监听接入请求并将其传递给服务线程处理和应答

  

3. apache总是会维持一个备用(备用)或是空闲的服务线程池,客户端无须等待新线程或新进程的建立即可得到服务

  

4。父进程一般都是以根身份启动,以绑定80端口,随后,Apache以较低权限的用户建立子进程和线程

Apache工作模式介绍