与 Apache 相比,Node.js 的性能如何?

Posted

技术标签:

【中文标题】与 Apache 相比,Node.js 的性能如何?【英文标题】:How does Node.js perform compared to Apache? 【发布时间】:2011-03-22 09:22:46 【问题描述】:

Node.js 是否比 Apache 更快、更具可扩展性?是否有任何性能数据来支持 Node.js 在 Apache 上的 Web 应用程序的性能?

更新:好吧,也许我的问题(上面)令人困惑,因为我对 Node.js 如何位于 Web 堆栈中感到有些困惑。在什么情况下我应该考虑使用 Node.js 而不是 phpmysql 和 Apache 等更传统的堆栈 - 还是 Node.js 在这个堆栈中发挥它的作用?

【问题讨论】:

什么更快?您要为哪种类型的 Web 应用程序提供服务? 这个问题基本上不可能在特定测试用例的上下文之外回答。 这篇文章可能有助于回答你的问题:al3x.net/2010/07/27/node.html 感谢那篇文章确实有帮助。 【参考方案1】:

Node.js 是一个特别适合编写高性能 Web 应用程序的框架,而无需了解如何在低级别实现并发。它是一个使用非阻塞 IO 编写服务器端 javascript 应用程序的框架:将延续传递给 IO 调用,而不是等待结果。 Node.js 提供了一个系统 API(文件系统访问、网络访问等),其中所有 API 调用都有一个延续,运行时将在稍后执行结果,而不是阻塞并将结果返回给原始调用者。

如果您愿意,可以单独使用。但是您可能希望在 Node.js 前面有一个专用的反向代理:例如 Apache、nginx、LigHTTPD 等。或者,为了集群更大的应用程序,您可能希望在多个运行的 Node.js 应用程序服务器前面使用 HAProxy 之类的东西。

【讨论】:

@agnoster 感谢您的评论 - 我已更改答案。 感谢您的反馈!我要给出的唯一其他评论是,出于技术原因,如果您想在 Node.js 前面运行反向代理,并且您正在运行 socket.io,您将希望绕过其中的大部分进行 websocket 通信. 反向代理有什么好处? Node 的服务器功能是更多地用于轻量级测试和不太安全/性能,还是其他东西只是具有人们想要的基本节点服务器没有的功能?【参考方案2】:

最近(7 月 28 日,30 日发布)Google Tech Talk about Node.js 有一些性能数据,他还谈到了扩展。

【讨论】:

以上是关于与 Apache 相比,Node.js 的性能如何?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 与 .Net 的性能对比

Node.js 与 .Net 的性能对比

Node.js 与 .Net 的性能对比

Node.js 与 .Net 的性能对比

ApacheNginx 与 Node.js 之争 —— WordPress 与 Ghost 的性能大对决

Node.js——HTTP性能测试