nodejs - 为什么Node.js可以处理大量同时的持久连接?

Jac*_*ale 5 networking tcp node.js

我知道Node.js擅长保持大量的同时持久连接,例如,许多聊天室的聊天室.

我想知道它是如何实现这一目标的.我的意思是无论如何它是使用由底层操作系统封装的TCP/IP,为什么它可以很好地处理持久连接而其他人不能?

它有什么神奇之处?

Ama*_*dan 6

Node.js使所有I/O异步.它只在单个线程中运行,但在等待I/O时会执行其他请求或操作.

相比之下,经典Web服务器在前一个请求完全完成之前不会提供另一个请求.出于这个原因,Apache同时运行多个进程; 假设有10个httpd进程,通常意味着可以在任何时间(*)提供10个请求.如果进程需要更多时间来完成,那么您将提供更少的请求 - 或者必须生成更多进程,即使进程无效 - 例如等待数据库咀嚼和返回数据.

面向将进入数据库的请求的node.js进程使数据库在进行另一个请求时工作.

*)MPM使这不完全正确,但对所有意图和目的都足够真实.