我看到很多人正在使用nginx来提高服务器的性能(即使Facebook正在使用它)。我想知道它是怎么做到的。我不想要实现细节。足够的细节,以便我可以自信地使用它。
答案 0 :(得分: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和我的特定配置(FreeBSD 6)上有10%的CPU。 在相同类型的负载下,apache会崩溃(在使用1000个左右的进程后,上帝知道多少RAM),pound掉线(线程太多,并且对所有线程堆栈使用400MB + RAM),并且轻微泄漏每小时超过20MB(并且使用更多的CPU,但不是更多)。“