为什么微软 IIS 比 nginx 快这么多?

为什么微软 IIS 比 nginx 快这么多?

根据经过基准测试,IIS 在速度方面始终优于 nginx。具体来说,IIS 使用的 CPU 功率比 nginx 少 2.3 倍,处理请求量是 nginx 的两倍多,而响应时间不到 nginx 的一半。

这篇博文没有进一步说明 IIS 内部是如何使其如此之快的。它只是说:

IIS 与 Windows 操作系统结合使用时快速且可靠。

我想知道 IIS(或者可能是 Windows NT)到底做了什么,让它比 Linux 上的 nginx 快得多。我无法找到任何其他信息来确切说明 IIS 为何如此之快。不过,我找到了另一个基准和第一个一致。

答案1

我对这些结果非常怀疑。虽然 IIS 可能更快,但这两篇文章都没有提到任何有关硬件、操作系统设置(文件系统挂载选项、io 调度程序、网络缓冲区、tcp 堆栈设置等)、Web 服务器配置的具体信息。现代 http 服务器非常复杂,您可以打开和关闭大量选项和模块。为了进行相关测试,您需要在类似条件下测试所有服务器并启用类似功能。没有这个,它就是苹果和橘子。

答案2

这非常值得怀疑。我们已使用 iis 部署了 Web API(.net core 3.1),并使用 Ubuntu 部署了 NGINX。使用 nginx 的响应时间是 iis 的 1/3。没有执行负载测试。但另一件大事是,我们为 ubuntu 和 windows server 配备了 8gb 的机器,而 windows server 中的操作系统本身占用了 2.5 gb 的内存。而 ubuntu 的内存消耗较少,包括应用程序在内总共不到 1 Gb。

答案3

  • 关键字1 - IOCP - 理论上比Nginx使用的epoll更好
  • 关键字 2 - http.sys - IIS 的某些部分在内核空间中运行

答案4

以下一些参数可能会影响 Web/应用程序服务器的性能:-

系统容量:RAM、RAM 类型、系统 L1 缓存、系统 L2 缓存、处理器容量、系统总线容量、磁盘类型、操作系统、文件系统架构。

Web/应用服务器:Web/应用服务器的类型/版本、Web 请求处理能力、索引能力、根据需要扩大/缩小的能力、对象实例处理能力、内存管理能力。

网络:网络容量、网络连接性和网络 I/O 处理能力。

Web/应用程序服务器的版本:同一 Web/应用程序服务器的不同版本的性能可能有所不同。

为了进行性能比较,应该只有一个变量。

我们需要明确什么是性能测试规范。

相关内容