我目前已在 12.04 32 位 Ubuntu 服务器上安装了 Apache,但我有兴趣切换到 Nginx。我读过许多比较和评论,其中 Nginx 比 Apache 提供静态内容的速度更快,但这些都没有涵盖 PHP 性能。
这是我的问题:Nginx 与 Apache 相比,在 PHP 处理性能方面如何?Nginx 对 PHP 的处理速度也更快吗?
答案1
这里是 Apache 和 Nginx 的比较,列出了一些优点和缺点。
相比之下,Apache 处理大量请求时会启动更多进程来处理,这样做通常会消耗大量 RAM。有时 Apache 会担心其食物的大小。Apache 可以从 Ubuntu 软件包存储库快速获取sudo apt-get install apache2
。
- Apache 是当今最成熟的网络服务器,为网络上的网站提供支持的数量比任何其他服务器都要多。
- Apache 是一种成熟、灵活的 Web 服务器,许多企业级客户依靠它来提供动态和静态内容。
- Apache 可以在多种操作系统上运行,维护良好,并且它的普及意味着存在大量用户生成的文档。
- Apache 在服务器负载较高的情况下会消耗更多内存,从而导致性能下降。
- 由于其非常强大,Apache 的尺寸也比较大,这会导致更多的内存消耗。
Nginx(发音为“engine-ex”)是一款轻量级 Web 服务器,以速度、速度、速度而著称。它与 Apache 有根本区别——Apache 是进程和线程驱动的应用程序,而 Nginx 是事件驱动的。这种设计差异的实际效果是,少数 Nginx“工作”进程可以处理大量请求,而无需相互等待,也无需同步;它们只需“闭上眼睛”,一口一口地尽可能快地吃掉大象。
- Nginx 的设计理念是简单、轻量,并且所需的硬件资源比其他 Web 服务器要少。它通过使用基于事件的处理模型来实现这一点,该模型通常比基于进程的服务器所需的内存要少。
- Nginx 能够快速提供静态网页。
- Nginx 较新,与更成熟的 Web 服务器相比,其文档和支持较少。
- 轻量级的设计也意味着它可能更难定制,而这对于大型或复杂的配置来说可能是必要的。
Chris Lea 在“为什么使用 Nginx?”页面上的一句话简洁地总结了两者的区别:“Apache 就像 Microsoft Word,它有上百万个选项,但您只需要六个。Nginx 可以完成这六件事,而且完成其中五件事的速度比 Apache 快 50 倍。”
比较 Nginx 和 Apache 时,会发现两者都是开源软件,而且双方阵营都有一群忠实拥护者。Nginx 可从 Ubuntu 软件包存储库快速获取sudo apt-get install Nginx
。
最后,Nginx 和 Apache Web 服务器都是可靠的解决方案,尽管在特定情况下它们各有优势。Nginx 的主要优势包括快速提供静态网页,以及内存和硬件资源的消耗较少。Apache 是成熟且用途广泛的主力服务器,具有丰富的模块可用性和文档。根据您的业务需求和技术要求,其中一个或两者的组合可能适合您。
希望这会有所帮助。
来源:Lee Hutchinson & Lukasz Kujawa
答案2
带有 PHP-FPM 的 Nginx 通常比带有 的 Apache 更快mod_php
,但最终的性能提升取决于您部署解决方案或 Web 应用程序的环境(PHP 代码复杂性、用户/负载、硬件等)。
我们需要更深入地研究网络服务器,才能理解为什么没有对网络服务器的 PHP 性能进行简单的比较。
Nginx 中的 PHP 支持
Apache 用于mod_php
解释 PHP 代码。Lighttpd,早期 Nginx 的竞争对手,使用自己的spawn_fcgi
(另一个快速CGIApache 采用了一种名为 Apache 的实现来提高速度,结果能够使用与 Apache 相同甚至更少的资源为更多用户提供服务,从而越来越受欢迎。
Nginx 与 Lighttpd 稍有不同。截至目前,Nginx 支持许多功能,也可以配置为运行spawn_fcgi
,但它从未像 Lighttpd 那样与它紧密捆绑。这让我们重新考虑了 PHP 对网络服务器的支持,并可能导致FastCGI 进程管理器项目(PHP-FPM)。
从 12.04 开始,Ubuntu 中就可以通过软件包使用 PHP-FPM。Ubuntuphp-fpm
软件包是预先配置好的,但值得了解如何根据您的需要微调池参数(影响:代码的复杂性、可用 RAM 和 CPU 处理能力、执行时间)。还有一些指南可以解释如何为不同的应用程序设置专用池,这不仅可以提高性能,还可以提高安全性。如果您关心性能,您应该花时间了解新服务器堆栈的主要组件。
配置 Nginx
请阅读 Nginx 文档英文項目 wiki我发现它对于理解 Apache 的配置方式、Nginx 的不同之处(例如if
是邪恶的) 以及如何使用 Nginx 实现速度提升。
如果您用 Nginx 替换 Apache 并尝试以与 Apache 相同的方式配置它,那么您根本不会获得太大的速度提升,或者您的配置将无法工作。
Nginx 的主要目标是降低复杂性,同时提供广泛的功能集。
谁说不能在 Nginx 后面运行 Apache?
答案3
通常来说,当有大量静态内容且用户请求数量较高时,nginx 会更快。如果您的网站规模较小,那么选择 Web 服务器完全取决于您的偏好。但要回答这个问题,PHP 处理本身的差异应该可以忽略不计。
答案4
您可以使用 nginx,与 Apache2 相比,它的速度非常快,具有静态和动态机器人,并且响应时间也比其他的快。
它还可以与 php、rails 和其他脚本语言配合使用。