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工作模式介绍