0

据说Nodejs只使用一个进程来处理请求,然后那些使用I/O的功能会异步执行,这将提高Web服务器的效率。但是,那些处理 I/O 的进程不算数?与传统的Web服务器,如Apache,它使用多线程处理请求,每个请求都在一个线程中,成本(请求+ I/O)是否降低?

4

1 回答 1

0

是的,node.js 只需要一个线程(这比需要一个进程更具限制性,具体取决于操作系统)。是的,这确实会影响您的编程要求:

-- 你的程序绝不能阻塞!

关于为什么 node.js 这么快,你可以参考很多资源,例如:

http://www.manning.com/cantelon/NjsiA_meap_ch01.pdf

http://nodejs.org/about/

node.js 节省了其他服务器需要的上下文切换所施加的线程惩罚(参见 Slebetman)。我们在 2004 年用 C++ 构建了自己的这样的服务器,因为对性能的要求很高,当你的服务器必须打开和关闭很多连接时,这种方法确实节省了很多资源。

我认为您的问题中缺少的是 node.js 将需要很长时间的操作交给 O/S 并用答案回调。操作系统是完全多进程的。所以 node.js 只需要一个线程来控制它,但 I/O 是由 O/S 进程控制的。

然而,node.js 可以产生额外的进程,您可以在其中运行并行程序。

于 2012-11-01T11:05:11.523 回答