Nginx 和 Apache 在高流量网站中的选择

4

对于高流量的网站,nginx 是否是更合适的 web 服务器选择?

如果是电子商务网站,这是否有所不同。

我真正感兴趣的是从技术角度出发的实际原因。也就是说,为什么 nginx 从技术角度而言会成为此类网站的更好选择,或者相反,为什么不会?


https://www.google.com/search?q=apache+vs+nginx - Danica
谢谢@Dougal - 非常好的链接 :) - 我正在寻求这些服务器在特定用例中的建议,而不是一般的Apache v nginx。虽然感谢您的意见,您是一个非常有知识的人,我很感激您花时间提供那个链接。 - Martin
1个回答

13

Martin,

通常情况下,由于其事件驱动架构,Nginx更适用于高流量网站。它使用非阻塞I/O来在每个线程中服务多个请求,而不是在不同的线程中处理每个请求。

这种架构的重要方面是减少进程或线程的使用。一个线程可以消耗从2MB到超过64MB的RAM。因此,当Apache提供10KB的JPEG时,实际上可能使用了大量的RAM。如果您有慢速客户端(例如智能手机),其中请求可能会使线程繁忙几秒钟,那么情况就会变得更糟。

许多人发现在Apache前面运行Nginx作为代理是一种理想的折衷方案。Nginx与慢速客户端交互,并且可以使用非常小的RAM量进行交互。当请求转发到Apache时,请求速度受本地连接的限制,而不是远程用户的连接速度。这意味着网络瓶颈不会让请求(和它的内存占用线程)保持活动状态时间超过必要的时间。

简而言之,您将获得Nginx低资源利益以及Apache宽泛的功能集。


apache2-mpm-event。尚未进行比较,但对于Apache来说是相同的架构,应该被提及。 - korkman
@cliff.wells,你所说的事件驱动架构是指当PHP准备好响应时,Nginx会收到通知吗?此外,我不理解第二部分,即什么是Apache的广泛功能集,以及如何使得在Apache前面运行Nginx作为代理成为一个理想的中间地带。 - Sandeepan Nath
所以,PHP在Nginx上能否提供与Node.js相当的性能? - Maaz Rehman
1
@MaazRehman 这也取决于所涉及的语言相对速度。 - cliff.wells
哦。但据我所知,Node.js是异步的,而PHP通常不是。这是否意味着比较Node.js和PHP是无关紧要的? - Maaz Rehman
这些都不是我的专业领域,但你可以在几乎任何语言中编写异步代码(包括PHP,请参见http://reactphp.org/)。 - cliff.wells

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接