Apache 2.4 +中的Apache MPM事件

多年来,我一直在使用mpm-prefork模块,因为据我所知,这是Apache 2和1.3的首选工作者。

现在我将安装一些新的Apache服务器,并将使用更新的2.4版本,基于事件的mpm使用epoll / kqueue。

我知道在过去的几年里,基于事件的系统已经变得非常stream行(例如nginx,lighttpd,node.js),所以既然mpm-event现在在Apache中稳定的,那么这是首选的多处理模块吗?

我还注意到了mpm-event文档页面的评论:

改进的连接处理还不适用于某些连接筛选器,特别是SSL。 对于SSL连接,此MPM将回退到worker MPM的行为,并为每个连接保留一个工作线程。

我们的主站强制build立一个SSL连接,所以很明显,我们不会从改进的与保持连接有关的连接处理中获益,但是我的理解是正确的,因为线程的发生将会减less,所以仍然会有一些性能改进。

prefork MPM多年来一直不是“首选”MPM。

它仍然是许多发行版默认的原因是某些第三方库在工作者MPM(自从版本2.2以来一直是首选的MPM)的线程中遇到麻烦。

不是像mod_php这样的模块,这是相当线程安全的,但像mod_php等模块使用的库,如mysqli等

在2.4中,我们现在切换到了STABLE事件MPM。

该版本还是非常新的,文档还没有完全更新,以反映这一点。

多年来一直如此,如果prefork MPM引起你的悲伤,切换到线程服务,并通过fastCGI运行你的dynamic内容。