这里做了些基准测试表明 nginx 打败了其它的轻量级的 web 服务器和代理服务器,同样也赢了相对不是那么轻量级的产品。
有人说这些基准测试是不准确的,因为在这样那样的环境下,做的比较不一致。我倾向同意基准测试只是告诉了我们其中一部分情况,你能做的是消除偏见(有人见过所有人都同意一个基准测试是公平的吗?我是没见过。)
不管怎样,这篇文章不是做基准测试来让人们争论(如果你喜欢,可以在 Google 上找到那样的文章),相反,下面的引述来自人们在现实世界中使用Nginx,在真实的负载下,服务于真正的应用和网站。
引述
我们投资的一些公司把 web 平台切换到Nginx后,可以显著的解决扩展问题。Nginx明显有效的实现了今天互联网上最大网站数量的增长。
– Thomas Gieselmann, BV Capital.
我对今天运行网站的所有人的建议是,想打破性能限制就研究下能否使用Nginx。CloudFlare 去年在一个相对较小的基础设施上已经扩展到可以处理每月超过 150 亿的浏览量,很大程度上是因为Nginx的扩展性。我的经验表明切换到Nginx可以最大限度的利用现代的操作系统和现有的硬件资源。
– Matthew Prince, CloudFlare 的联合创始人和 CEO
Apache 和 Nginx 都有能力提供每秒钟庞大的请求服务,但是随着并发数量的增加,Apache 的性能开始下降,然而 Nginx 的性能几乎不会下降。
这里最好的一点是:因为 Nginx 是基于事件的,它不用为每个请求产生新的进程或线程,所以它的内存使用很低。在我的基准测试中,它的内存使用坐落在 2.5M,Apache 使用得更多。
针对 Nginx v0.5.22 and Apache v2.2.8 我用 ab(Apache 的基准测试工具)跑了一个简单的测试。在测试过程中,我用 vmstat 和 top 检测系统。结果表明在提供静态内容时,Nginx 做得比 Apache 好。两个服务器都在并发数 100 时表现最佳。Apache 使用 4 个工作进程(线程模式),30%的 CPU 和 17MB 的内存,每秒钟处理 6,500 次请求。Nginx 使用一个工作进程,15%的 CPU,1MB 内存,每秒钟处理 11,500 次请求。
Apache 好比是微软 Word,它有 100 万个选项,但是你只需要其中 6 个。Nginx 就处理那 6 项任务,但处理其中 5 项任务时速度比 Apache 快 50 倍。
我现在使用 Nginx 在单一服务器上处理每天超过数千万(也就是每秒钟几百次)的反向代理 HTTP 请求。在负载高峰期,它消耗大约 15MB 的内存和 10%的 CPU,在我的特定配置下(FreeBSD 6)。
在同样的负载下,Apache 表现大跌(在大约使用 1000 个进程后,上帝知道使用了多少内存),Pound表现大跌(如此多的线程,所有的线程栈会消耗 400MB 以上的内存),还有 Lighttpd 每小时泄露 20MB 以上内存(使用更多 CPU,但不显著)。
– Bob Ippolito in the TurboGears mailing list, 2006-08-24
我们现在使用 Nginx 0.6.29 的 upstream hash 模块为我们需要的 Varnish 代理提供静态杂凑。我们通常处理 8-9 千次请求/秒,大约 1.2Gb/秒数据在几台 Nginx 服务器间传输,而且还有很大的成长空间。
直到今天,我们一直使用Pound来解决Justin.tv 的负载均衡。它一直使用 20%的 CPU,在高峰期会达到 80%。在极高的负载下,它偶尔会崩溃。
我们只是切换到了 Nginx,负载马上就降到了大约 3%的 CPU 使用。我们的页面感觉更快了,尽管这可能是我的错觉。不仅它的配置文件格式容易理解和配置,而且还提供了完整的 web 服务器功能。我们再也没有遇到尖峰期了,而且我怀疑现有的性能会彻底打败 Pound。
我们使用 Nginx 作为主要的软件用于一个免费的托管平台,我已经在 Nginx 中开发了一个特定的模块用于 banner 潜入和统计计算,现在我们的中央服务器可以处理大约 150-200Mbit/s 高度分散的 http 流量(所有的文件都很小)。
我认为这是非常好的结果。因为在同样的服务器上面 Apache 不管怎么优化,甚至都不能处理 60-80Mbit/s。
前阵子,我们把我们的前端 IMAP/POP 代理从 perdition 切换到了 nginx…,现在我们又使用 nginx 来做前端 web 代理服务器…。最终的结果是,现在的每台前端代理服务器可以保持超过 10,000 并发(IMAP, POP, Web & SMTP)连接(其中很多还是 SSL),仅仅只使用了大约 10%的 CPU。
最近,我们的静态内容服务器切换到了 Nginx,无疑这是这么多年来我印象最深刻的一款 web 服务器。我们运行在一台配有 8G 内存的机器上,但是 nginx 进程只使用了可笑的 1.4Mb。
– Philip Jacob
我们已经用 nginx 取代了 Squid(反向代理)+Apache 的方案,平均负载和 CPU 使用一样降低了一半。另外我们的基准测试表明新的配置每秒钟可以处理的请求数是旧配置的 2-3 倍。
– HowtoForge
我们用一些 CMS 系统( Wordpress, Drupal, Joomla, TYPO3 等)做了基准测试,结果是 Nginx 提供网页的速度比 Apache 快了 50%,同时 nginx 每秒钟处理的请求数(RPS)是 Apache 的 177%。