node.js会使用多个核心吗?

node.js会使用多个核心吗?,node.js,ubuntu,Node.js,Ubuntu,我有一台Ubuntu 16机器,有两个Node.js网站,即两个Node.js应用程序在不同的端口上侦听。如果CPU有多个可用内核,那么这两个网站是否会在不同的内核上运行线程?有什么我必须做的,使他们总是运行在不同的核心 现在,我只需使用以下工具即可启动我的应用程序: cd app1 nodejs ./server.js cd ../app2 nodejs ./server.js 可以在[official node.js documentation][1]中找到: Node.js的单个实例在单

我有一台Ubuntu 16机器,有两个Node.js网站,即两个Node.js应用程序在不同的端口上侦听。如果CPU有多个可用内核,那么这两个网站是否会在不同的内核上运行线程?有什么我必须做的,使他们总是运行在不同的核心

现在,我只需使用以下工具即可启动我的应用程序:

cd app1
nodejs ./server.js
cd ../app2
nodejs ./server.js

可以在[official node.js documentation][1]中找到:

Node.js的单个实例在单个线程中运行。接受 用户有时希望启动的多核系统的优势 Node.js进程集群用于处理负载

因此,您的问题的答案是:

这两个网站会在不同的内核上运行线程吗

有什么我必须做的,使他们总是运行在不同的核心


不,这是node.js的默认行为。

归根结底,这是一个关于Ubuntu/Linux如何安排线程/进程的问题。也许您可以尝试使用taskset或cpuset在其上运行线程/进程。这样做会在两个不同的内核中启动两个节点应用程序,除非您使用的是cluster。node.js进程使用多个线程。我还认为有可能多个Node.js进程被安排在同一个核心上运行。这不是真的,请阅读我在响应中引用的Node.js文档。您应该阅读Node.js中如何实现事件循环(使用多个工作线程)。如果您不相信我,请启动
top
或类似的程序,查看与
节点
进程相关联的线程数量。只有一个线程运行JS代码,但node.JS不止这些<例如,用于实现事件循环的code>libuv,默认情况下启动4个I/O工作线程(可通过
$UV\u THREADPOOL\u SIZE
进行调整)来处理网络I/O。我不确定您要证明什么。事实是:Node.js进程由多个线程组成(在Linux中,这些线程可以在不同的内核上运行)。其中一个线程专用于JS代码,这通常就是“Node.JS是单线程的”的意思:您无法从JS()管理线程。有关Node.js事件循环如何工作的更多信息: