今天我们来简单介绍一下Apache工作模式。
一、Apache工作模式简介
Apache有三种工作模式,分别是Prefork、Worker和Event。这三种工作模式,使得Apache在处理多个不同的客户端请求时,使用不同的方式进行处理。其中Event为Apache开发组的实验模式,使用较少,因此在今天不予过多介绍。
二、Prefork工作模式简介
Prefork模式为Apache默认使用的工作模式,在该模式下,采用的机制是预派生子进程的方式,使用单独的进程来处理不同的请求。
如果Apache运行在Prefork工作模式下,Apache控制进程在最初启动后,会根据配置文件中MinSpareServers的值来创建进程。在最初的StartServer进程启动后,等待一秒钟,创建第一个进程,等待两秒钟,又创建两个进程,再等待一秒钟后,又会创建4个进程,并且始终以指数型形式增加,最多每秒钟创建32个进程,知道满足MinSpareServers的值。
Prework的优点在于,不需要在收到客户端请求后新建立进程,从而在一定程度上减小了系统开销,但是,进程相对来说会耗费一定的系统资源。
三、Worker工作模式简介
与Prefork模式不同,Worker模式使用不同的线程来处理不同的客户端请求,控制进程在启动后,悔根据配置文件中的ThreadsPerChild值得大小,在进程下启动相应的线程数,这些线程并发的处理客户端的请求。如果客户端请求过多,一个进程的线程数不能够处理,则Worker模式下也会创建其他的进程,在新的进程下会继续创建不同的线程,所有的线程一起并发的进行处理客户端请求。因此Worker工作模式下,同时处理的并发数为进程数×每个进程下的线程数,但是,进程数不能超过配置文件中ServerLimit值。
相比Prefork工作模式,Worker工作模式下使用线程处理客户端请求,占用内存量小,适合高并发场景下的WEB服务器部署。然而,线程相对于进程的缺点在于,稳定性比较差,在Prefork模式下,当一个进程崩溃,收到影响的仅仅是该进程本身,但是在Worker模式下,当一个线程崩溃,则该进程下的所有线程都会收到影响。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40228200/article/details/121870252