Event MPM 与 Nginx 的设计并不完全相同,但显然是为了让 keepalives 更稳定并更快地发送静态文件而设计的。我的理解是 Event MPM 有点用词不当,因为:
- 虽然连接是传给kqueue/epoll,
- 某些非常重要的模块,例如 mod_gzip 和 mod_ssl 将阻塞/消耗一个线程,直到响应完成,
- 这是大文件的问题,但可能不是 PHP 生成的 HTML 文档等。
不幸的是,Apache 不断失去市场份额,大多数基准测试都对 MPM 事件不利。基准测试是否存在缺陷,或者事件 MPM 对 Nginx 的表现真的很差?即使有这些限制,在正常流量(非恶意)和较小文件下,它应该与 Nginx 有一定的竞争力。例如,通过 php-fpm 在慢速连接上提供 PHP 生成的文档应该是有竞争力的,因为文档将被缓冲(即使是 ssl'd 和 gzip'd)并异步发送。使用压缩或不使用压缩的 SSL 和非 SSL 连接的工作方式与 Nginx 在此类工作负载上的工作方式没有明显不同。
那么为什么它没有在各种基准测试中大放异彩呢?它出什么问题了?或者基准有什么问题?一个主要网站是否使用它来呼吁它可以执行的权威?