2014-01-17 51 views
0

我看到很多人使用nginx来提高服务器的性能(甚至Facebook正在使用它)。我想知道它是如何做到的。我不想要实现细节。只要足够的细节,我可以自信地使用它。nginx如何提高Web服务器的性能?

+1

请参阅ServerFault上的[this](http://serverfault.com/a/86691)回答。 – ProfessionalAmateur

回答

1

http://www.wikivs.com/wiki/apache_vs_nginx

Apache是​​一个基于流程的服务器,同时nginx的是一种基于事件的Web服务器。

异步方法的主要优点是可伸缩性。在基于进程的服务器中,每个同时连接都需要一个导致大量开销的线程。另一方面,异步服务器是事件驱动的并且在单个(或至少很少)的线程中处理请求。

虽然基于进程的服务器在轻负载下通常可以与异步服务器相媲美,但在较重的负载下,它们通常会消耗更多的RAM,从而显着降低性能。而且,它们在功能较弱的硬件或资源受限的环境(如VPS)中降级速度更快。

为了便于说明,为10,000个并发连接提取数字可能只会导致Nginx使用几兆字节的RAM,而Apache可能会消耗数百兆字节(如果可以的话)。

nginx在提供静态文件方面速度更快,并且为并发请求消耗更少的内存,因为Nginx是基于事件的,不需要为每个请求产生新的进程或线程,因此其内存使用率非常低。 Wordpress.com发现nginx是唯一能够每秒处理8000次实时流量请求的负载平衡器。 “

”我目前有nginx做每日超过数千万的HTTP请求的反向代理(这就是几百每秒)在单一服务器。在高峰负载时,它使用大约15MB RAM和10%CPU我的特殊配置(FreeBSD 6) 在同样的负载情况下,apache跌倒了(在使用1000个左右的进程后,上帝知道有多少内存),英镑跌倒了(太多的线程,并且所有的内存都使用了400MB +线程栈),并且轻巧泄漏每小时超过20MB(并且使用更多的CPU,但不会更多)。“