技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

谁更快?Apache和Nginx处理静态和动态内容比较

作者:admin    时间:2022-3-22 10:39:23    浏览:

大多数人在开始要用到Web服务时,首先遇到的就是选择哪个 Web 服务器问题。而 Apache 和 Nginx 是世界上最常见的两种开源 Web 服务器。他们共同负责为互联网上超过 50% 的流量提供服务。因此,大多数人会最终选择 Apache 或 Nginx。

 谁更快?Apache和Nginx处理静态和动态内容比较

在二选一的情况下,你不得不对这两服务器进行一番比较。而速度的快与慢则又是大家确定选择的重中之重。这正是书写本文的初衷,本文将给大家介绍的是,Apache 和 Nginx 服务器处理静态和动态内容请求的方式区别,这是它们之间最常见的比较之一。

Apache

Apache 服务器可以使用其传统的基于文件的方法来处理静态内容。这些操作的性能主要是 MPM 方法的函数。

Apache 提供了多种多处理模块,Apache 将这些 MPM 称为 MPM,这些模块决定了如何处理客户端请求。这些是:

  • mpm_prefork:这个处理模块产生进程,每个进程都有一个线程来处理请求。
  • mpm_worker:这个模块产生可以管理多个线程的进程。
  • mpm_event:该模块在大多数情况下类似于工作模块,但经过优化以处理保持活动连接。

Apache 还可以通过将相关语言的处理器嵌入到其每个工作实例中来处理动态内容。这允许它在 Web 服务器本身内执行动态内容,而无需依赖外部组件。这些动态处理器可以通过使用可动态加载的模块来启用。

Apache 在内部处理动态内容的能力直接促成了 LAMP(L inux- A pache- M ySQL- P HP)架构的流行,因为 PHP 代码可以由 Web 服务器本身本地执行。

Nginx

Nginx 没有任何原生处理动态内容的能力。为了处理 PHP 和其他对动态内容的请求,Nginx 必须将请求交给外部库执行并等待输出返回。然后可以将结果转发给客户端。

这些请求必须由 Nginx 和外部库使用 Nginx 知道如何说话的协议之一(http、FastCGI、SCGI、uWSGI、memcache)交换。在实践中,PHP-FPM是一种 FastCGI 实现,通常是一种插入式解决方案,但 Nginx 与任何单一架构的耦合不如 Apache 与 PHP 的紧密耦合。

但是,这种方法也有一些优点。由于动态解释器没有嵌入在工作进程中,它的开销只会出现在动态内容中。静态内容可以直接提供,只有在需要时才会联系翻译程序。

Apache 和 Nginx 之间最大的区别

Apache 和 Nginx 之间最大的区别在于它们处理请求方式的底层架构。

Apache 使用 MPM-s 或Multi-Processing-Modules处理请求,它“负责绑定到机器上的网络端口、接受请求并调度子进程来处理请求”。

在后来的几年里,Apache 开发了多线程工作者 mpm,之后又开发了事件 mpm。它们都减轻了 Apache 的许多性能问题。切换到 php-fpm 使得 Apache 有可能在今天仍然是一个竞争解决方案,同时消除了 .htaccess 的使用,但这违背了它的目的。

简而言之,Apache 对每个连接都使用进程(对于 worker mpm,它使用线程)。随着流量的增加,它很快就会变得过于昂贵。

我们可以想象新进程或线程的创建,例如启动计算机或启动程序。即使在最快的计算机上,它仍然需要一些时间。如今的网站在单个页面加载时会发出数百个请求,这很快就会增加。

Event mpm 在优化方面走得更远一些,但一些测试表明它无法超越 Nginx。尤其是当我们谈论静态文件时,Nginx 提供的请求是 Apache 的两倍

Nginx 理想情况下每个 CPU/核心有一个工作进程。Nginx 工作进程的不同之处在于每个工作进程可以处理数十万个传入网络连接。无需为每个连接创建新线程或进程。

怎样使用 Apache 和 Nginx

在了解了 Apache 和 Nginx 的优点和限制之后,你可能会更好地了解哪种服务器更适合你的需求。在某些情况下,可以通过一起使用每个服务器的优势来利用它们。

这种合作关系的常规配置是将 Nginx 作为反向代理放在 Apache 前面。这将允许 Nginx 处理所有客户端请求。这利用了 Nginx 的快速处理速度和同时处理大量连接的能力。

对于 Nginx 擅长的静态内容,文件或其他指令将快速直接地提供给客户端。对于动态内容,例如 PHP 文件,Nginx 会将请求代理到 Apache,然后 Apache 可以处理结果并返回呈现的页面。Nginx 然后可以将内容传递回客户端。

这种设置适用于许多人,因为它允许 Nginx 充当分拣机。它将处理它可以处理的所有请求,并传递它没有本机服务能力的请求。通过减少要求 Apache 服务器处理的请求,我们可以减轻在 Apache 进程或线程被占用时发生的一些阻塞。

此配置还通过根据需要添加额外的后端服务器来促进水平扩展。Nginx 可以配置为将请求传递给多个服务器,从而提高此配置的性能。

结论

Apache 和 Nginx 都强大、灵活且有能力。确定最适合你的服务器很大程度上取决于评估你的特定需求并使用你期望看到的模式进行测试。

这些项目之间的差异会对原始性能、功能和在生产中使用任一解决方案所需的实施时间产生非常实际的影响。使用最符合你的目标的解决方案。

标签: apache  nginx  linux技术  
x
  • 站长推荐
/* 左侧显示文章内容目录 */