Node.js服务器在I / O和大量客户端连接方面非常高效。但是,为什么与传统的多线程服务器相比,node.js不适合重型CPU应用程序?
我在这里读过Felix Baumgarten
尽管节点具有异步事件模型,但它本质上还是单线程的。启动Node进程时,您正在单个内核上的单个线程上运行单个进程。因此,您的 代码 将不会并行执行,只有I / O操作是并行的,因为它们是异步执行的。因此,长时间运行的CPU任务会阻塞整个服务器,通常不是一个好主意。
假设您只是这样启动一个Node进程,则有可能使多个Node进程并行运行。这样,尽管单个Node进程没有,您仍然可以从多线程体系结构中受益。您只需要在前面有一些负载均衡器,即可将请求分配到所有Node进程中。
另一种选择是让CPU在单独的进程中工作,并使Node与那些进程交互,而不是自己完成工作。
相关阅读内容: