Apache 三种工作模式
prefork
work
event
监控线程相当于 项目组长,面对客户,根据任务自行调度 团队成员。
Prefork模式为Apache默认使用的工作模式,在该模式下,采用的机制是预派生子进程的方式,使用单独的进程来处理不同的请求。
如果Apache运行在Prefork工作模式下,Apache控制进程在最初启动后,会根据配置文件中MinSpareServers的值来创建进程。在最初的StartServer进程启动后,等待一秒钟,创建第一个进程,等待两秒钟,又创建两个进程,再等待一秒钟后,又会创建4个进程,并且始终以指数型形式增加,最多每秒钟创建32个进程,知道满足MinSpareServers的值。
Prework的优点在于,不需要在收到客户端请求后新建立进程,从而在一定程度上减小了系统开销,但是,进程相对来说会耗费一定的系统资源。
三、Worker工作模式简介
与Prefork模式不同,Worker模式使用不同的线程来处理不同的客户端请求,控制进程在启动后,悔根据配置文件中的ThreadsPerChild值得大小,在进程下启动相应的线程数,这些线程并发的处理客户端的请求。如果客户端请求过多,一个进程的线程数不能够处理,则Worker模式下也会创建其他的进程,在新的进程下会继续创建不同的线程,所有的线程一起并发的进行处理客户端请求。因此Worker工作模式下,同时处理的并发数为进程数×每个进程下的线程数,但是,进程数不能超过配置文件中ServerLimit值。
相比Prefork工作模式,Worker工作模式下使用线程处理客户端请求,占用内存量小,适合高并发场景下的WEB服务器部署。然而,线程相对于进程的缺点在于,稳定性比较差,在Prefork模式下,当一个进程崩溃,收到影响的仅仅是该进程本身,但是在Worker模式下,当一个线程崩溃,则该进程下的所有线程都会收到影响。