Node 多进程:cluster 模块
用 cluster 让 Node 跑满多核。
发布 2017年12月07日 标签
#node
#concurrency
~/posts/multi-process-node $ cat post.md
多核机器上 Node 可以靠多进程提升吞吐。Node 自带的 cluster 模块就是干这件事的,API 风格和 C 语言相对接近。
const cluster = require("cluster");
const http = require("http");
const numCPUs = require("os").cpus().length;
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on("exit", function (worker, code, signal) {
console.log(`worker ${worker.process.pid} died`);
});
} else {
http.createServer(function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
}
逻辑大体可以翻译成 C 语言里的:
int numCPUs = /* num CPUs */;
for (int i = 0; i < numCPUs; i++) {
if (fork() == 0) {
// createServer
}
}
这套已经接到 GHOTI-CLI 里了。