apache工作模式


apache2.x支持插入式并行处理模块,称为多路处理模块(MPM),在编译时必须选择也只能选择一个MPM

prefork模式

prefork是一个多路处理模块MPM,实现了一个进程型的、预派生的web服务器,适合于没有线程安全库、需要避免线程兼容性问题的系统

在要求每个请求相互独立的情况下具有很好的特性,若一个请求出现问题不会影响到其他请求

具有很强的自我调节能力,只需要很少的配置指令进行调整就可以适合于企业应用要求

最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以避免所需的内存超出物理内存的大小

一个单独的控制进程(父进程)负责产生子进程,子进程用于监听请求并作出应答,因此在内存中存在一些备用的(spare)或是空闲的子进程用于响应新的请求,可加快响应速度父进程通常以root身份运行,以便绑定80端口,子进程通常以一个低特权的用户运行,可通过User和Group配置

运行子进程的用户必须要对网站内容有读取权限,但是对其他资源必须拥有尽可能少的术系统安全

编译安装时没有指定工作模式,默认会使用prefork模式,可用httpd -l 查看

在httpd的配置文件中包含prefork的配置文件

Include conf/extra/httpd-mpm.conf

conf/extra/httpd-mpm.conf

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

worker模式

worker模式支持混合的多线程多进程,可处理海量请求

该模式下每个进程能拥有的线程数量是固定的,服务器会根据负载情况±进程数量

一个父进程负责子进程的建立

每个子进程能建立一定数量的服务线程和一个监听线程,监听进程监听接入请求并将其传递给服务线程处理和应答

换成worker模式:

在编译时添加–with-mpm=worker参数

重新安装

同样在主配置文件中包含worker的配置文件

Include conf/extra/httpd-mpm.conf

conf/extra/httpd-mpm.conf

<IfModule mpm_worker_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>
参数说明
ServerLimit最大进程数,默认值是16
ThreadLimit每个子进程的最大线程数,默认值是64
StartServers服务器启动时简历的子进程数,默认值是3
MaxClients允许同时接受的最大接入请求数量(最大线程数量)
MinSpareThreads最小空闲线程数,默认值是75
ThreadsPerChild每个子进程建立的常驻的执行线程数,默认值是25
MaxRequestsPerChild设置每个子进程在其生存期内允许伺服的最大请求数量,设置为0,子进程永不结束

event模式

event和worker很像,不同在于解决了keepalive长连接的时候占用线程资源被浪费的问题

遇到某些不兼容的模块时会失效并回退到worker模式

需要Linux2.6+对epoll的支持,需要补充的是ssl(secure socket layer)连接

有专门的线程来管理keepalive类型的线程

在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值