多年来,已经编写了无数的 Web 服务器。Apache 是最古老的之一,也是当今使用最广泛的。但是,它是使用在某些方面可能相对低效的缩放机制实现的。过去几年出现了一些更新的 Web 服务器,试图解决 Apache 的一些缺点。其中最突出的之一是Nginx。
本文检查了每个 Web 服务器的相对性能,以了解它们如何进行正面对比。请记住,这并不意味着要进行详尽的最终性能比较。希望只是简单地给出常见条件下的相对性能比较。
测试方法
测试这些 Web 服务器的方法使用ApacheBench(一种 HTTP 服务器基准测试工具)。
在每个测试中,从 VPS 本地发出 25,000 次请求,请求5k PNG 文件,以从等式中消除潜在的可变网络条件。推荐阅读:《web服务器iptables 简单的配置》
在每次测试之前,有问题的 Web 服务器都会重新启动,以清除任何可能影响结果的潜在缓存或其他问题。
每个测试都使用不同数量的并发请求运行,以衡量不同使用级别的性能。(考虑到浏览器允许您浏览网站的每个用户最多 6 个并发连接是很常见的。因此,10 个用户同时浏览您的网站将相当于大约 60 个并发连接)。
此测试中使用的命令遵循以下格式:
其中-c标志随着并发级别的增加而增加。
内存使用情况
衡量这一点很重要,尤其是在 VPS 上,你的内存使用量有硬上限,提高它会花费你额外的钱。(请注意,内存以兆字节为单位。)
如您所见,Nginx 在这次测试中明显领先。事实上,差异如此巨大,几乎有点令人难以置信。如此巨大的差距怎么会存在?
它与 Apache 如何处理更多传入请求的扩展有关。为了处理额外的请求,它会产生新的进程。随着越来越多的连接进入,产生了越来越多的 Apache 进程来处理它们。这会导致内存使用量快速增长。
相比之下,您会看到 Nginx 的内存使用量相当静态,并且从头到尾都保持相当静态。
每秒请求数
这本质上是衡量服务器在不同并发级别上接收和服务请求的速度。他们每秒可以处理的请求越多,服务器处理大量流量的能力就越强。以下是服务器在该领域的比较:
Nginx 显然在每秒可以服务的原始请求数中占主导地位。在更高的并发级别下,它每秒可以处理更少的请求,但仍然比 Apache 多。
请记住,显示的结果仅适用于测量相对(而非绝对)性能,因为测试是在服务器本地进行的。
警告
请记住,Apache 支持一个更大的工具箱,它可以立即执行并且可能是当今所有 Web 软件中最兼容的。此外,大多数网站实际上并没有获得那么多的并发点击,以至于无法从 Nginx 获得巨大的性能/内存优势——但您可以检查一下它是否最适合您的需求。推荐相关阅读:《三大WEB服务器对比分析—-apache ,lighttpd,nginx》