We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
众所周知,JS代码运行是单线程的,nodejs也是单线程的架构,一个nodejs实例就是一个nodejs进程,其中只存在一个JS线程,但是我们在构建系统的时候,单一线程有时候没有办法满足所有需要,而且对多核系统来讲,单一进程并不能充分利用系统资源,所以我们有时候需要启动多个nodejs实例来处理业务。
cluster模块可以创建共享服务器端口的子进程。
cluster
const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`主进程 ${process.pid} 正在运行`); // 衍生工作进程。 for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`工作进程 ${worker.process.pid} 已退出`); }); } else { // 工作进程可以共享任何 TCP 连接。 // 在本例子中,共享的是 HTTP 服务器。 http.createServer((req, res) => { res.writeHead(200); res.end('你好世界\n'); }).listen(8000); console.log(`工作进程 ${process.pid} 已启动`); } // 运行结果 $ node server.js 主进程 3596 正在运行 工作进程 4324 已启动 工作进程 4520 已启动 工作进程 6056 已启动 工作进程 5644 已启动
个人理解cluster其实是在child_process模块基础上进行的封装,里边的调用还是通过child_process进行的。
child_process
The text was updated successfully, but these errors were encountered:
No branches or pull requests
众所周知,JS代码运行是单线程的,nodejs也是单线程的架构,一个nodejs实例就是一个nodejs进程,其中只存在一个JS线程,但是我们在构建系统的时候,单一线程有时候没有办法满足所有需要,而且对多核系统来讲,单一进程并不能充分利用系统资源,所以我们有时候需要启动多个nodejs实例来处理业务。
cluster
模块可以创建共享服务器端口的子进程。工作原理
个人理解
cluster
其实是在child_process
模块基础上进行的封装,里边的调用还是通过child_process
进行的。The text was updated successfully, but these errors were encountered: