Apache 2.4+ 中的 Apache MPM 事件

dre*_*010 2 performance httpd apache-2.4

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

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

我知道在过去几年中,基于事件的系统风靡一时(例如 nginx、lighttpd、node.js),所以既然 mpm-event 现在在 Apache 中稳定的,这是首选的多处理模块吗?

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

改进的连接处理尚不适用于某些连接过滤器,尤其是 SSL。对于 SSL 连接,此 MPM 将回退到工作 MPM 的行为,并为每个连接保留一个工作线程。

我们的主站点强制使用 SSL 连接,因此很明显我们不会从与保持活动相关的改进连接处理中受益,但我的理解是否正确,因为线程会减少,因此仍然会有一些性能改进?

ada*_*ptr 7

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

它之所以仍然是许多发行版默认的是,一些第三方库有与工人MPM的线程(这麻烦一直以来2.2版本的首选MPM)。

不是像 mod_php 这样非常线程安全的模块,而是像 mod_php 这样的模块使用的库,比如 mysqli 等。

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

该版本仍然很新,文档尚未完全更新以反映这一点。

与多年来的情况一样,如果 prefork MPM 使您感到悲伤,请切换到线程服务并通过 fastCGI 运行您的动态内容。