龙空技术网

Apache的工作模式

爱生活更爱分享 206

前言:

现时同学们对“apache2epoll”可能比较着重,同学们都想要分析一些“apache2epoll”的相关内容。那么小编也在网络上汇集了一些关于“apache2epoll””的相关知识,希望朋友们能喜欢,我们一起来学习一下吧!

1、Prefork MPM:多进程

prefork模式可以算是很古老但是非常稳定的模式。Apache在启动之初,就预派生fork一些子进程,然后等待请求进来,并且总是试图保持一些备用的子进程。

之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程中只有一个线程,在一个时间点内,只能处理一个请求。

2、Worker MPM:多进程+多线程

worker模式比起上一个,是使用了多进程+多线程的模式。它也预先fork了几个子进程(数量比较少),每个子进程能够生成一些服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。

线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下,表现得比 prefork模式好。

多进程+多线程模式中,各个进程之间都是独立的,如果某个线程出现异常,受影响的只是Apache的一部分服务,而不是整个服务。其他进程仍然可以工作。

3、Event MPM:多进程+多线程+epoll

Apache中最新的模式,在现在版本里的已经是稳定可用的模式。它和 worker模式很像,最大的区别在于,它解决了 keep-alive 场景下 ,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,挂在那里等待,中间几乎没有请求过来,一直等到超时)。

event MPM在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。官方自带的模块,全部是支持event MPM的。

标签: #apache2epoll