Nginx 为什么这么快?

Nginx 为什么这么快?

rambler 这样的网站如何能如此快速地提供动态内容?甚至比 Yahoo 还快(Yahoo 在我的东南亚国家设有服务器,而 rambler 没有)。

这仅仅是 Nginx 的功能吗?我应该在哪里了解此类功能?

我是这里的新手,我相信如果从 Nginx 提供服务,serverfault.com 将比 IIS 7 快得多(假设两种情况下的数据库访问时间相同)。这是一个合理的假设吗?

编辑:

Karl 使用的帖子IIS7 之前的 Nginx

答案1

你可能会看到演示文稿概述了 nginx 的内部结构。主要区别在于异步处理请求,而不是像 Apache 那样使用线程。您可以查看本文档也一样。

答案2

rambler 这样的网站如何如此快速地提供动态内容?... 这纯粹是 Nginx 的功能吗?我应该在哪里了解此类功能?

这与所使用的 Web 服务器几乎没有关系 —— nginx、IIS 和 Apache 都“足够快”,一般可以在几毫秒内完成工作。nginx 比 Apache 快得多,但这仅仅意味着网站所有者需要更少的服务器来进行 Web 服务部分 —— nginx 并不会以更快的速度向您传输数据。

不太重要的部分是服务器端速度,即创建 HTML 所需的时间。更重要的部分是“前端”性能,我指的是 HTML、CSS、Javascript 和图像,它们的数量、它们的大小,以及它们的正确传送(HTTP 压缩、缓存)。

当然,服务器端速度仍然很重要,我并不是说应该忽略它或它不重要。但通常它是最终用户感知速度中最小的部分——服务器端工作通常在 500 毫秒内完成,但页面在 3,000 - 5,000 毫秒过去之前尚未准备好。这段时间的大部分用于下载前端资源(CSS、Javascript、图像)。

史蒂夫·苏德斯他在雅虎 (Yahoo) 时从事了原来的工作,现在在谷歌 (Google) 工作。他的第一本书《高性能网站》是学习制作快速网站的最佳起点。他的书中的相同材料可以在这个视频谈话, 和这些设计规则。然而,我发现这本书读起来很快,而且更容易理解。

您可以通过以下方式运行网站WebPageTest.org 的测试人员——这会让您很好地了解这些网站的前端部分,以及它们为什么更快或更慢。

我相信,如果从 Nginx 提供服务,serverfault.com 将比 IIS 7 快得多(假设两种情况下的数据库访问时间相同)。这是一个合理的假设吗?

不,那只是个误会。:-)

答案3

Nginx 更多地用于平衡其他应用程序/服务器的负载和提供静态内容,而不是用作完整的服务器。

例如,您可以使用众多 Python 框架之一编写应用程序,并让 nginx 成为该框架许多实例的前端(可能分布在多台机器上)。在这种情况下,nginx 服务器有两个用途:它直接处理对静态内容(如图像和样式表)的请求(由于其设计,它会这样做非常它会将动态请求传递给应用程序,将负载分散到它所知道的所有实例上。这也是 Ruby on Rails 社区中非常流行的配置。

Rambler 可能比本地 Yahoo 服务更快,还有另外两个可能的原因。首先,本地 Yahoo PoP 可能没有足够的资源来更快地处理它收到的请求数量,因此也许只需添加更多硬件(假设软件可以很好地扩展)即可加快速度(但据推测,这种差异不值得花费维护额外设备的成本,否则 Yahoo 会这样做)。另一个大差异可能在于后端而不是 Web 服务器 - 这两个服务无疑将具有非常不同的数据库安排,即使没有,它们也不太可能运行完全相同的查询(专用于数据库架构的硬件数量也会产生重大影响)。

分析为什么一种服务比另一种服务更快(通常或在特定情况下)通常不会得到一个简单的答案——设计一个旨在扩展到数千名用户的应用程序有很多种方法,每种方法都有自己的优点、问题和缺点,即使你将所有这些差异都考虑在内,每个站点都会有不同的用户群动态,此外还存在设计师无法控制的网络问题。

答案4

最好的网站使用应用程序加速器,例如 Zeus 的 ZXTM - 它们可以在很多情况下缓存动态响应,这显然有很大的好处。

相关内容