Node.js: 利用多核 CPU 运行代码

本文档属于快速入门指南的一部分。您可以在此处查看完整指南:了解如何在 Stackhero 上快速且安全地部署 Node.js 服务

👋 欢迎使用 Stackhero 文档!

Stackhero 提供现成的 Node.js 云 解决方案,具有众多优势,包括:

  • 通过简单的 git push 在几秒钟内 部署您的应用程序。
  • 使用您自己的域名,并享受 HTTPS 证书的自动配置以增强安全性。
  • 享受自动备份一键更新以及简单、透明和可预测的定价带来的安心。
  • 通过专用私有 VM获得最佳的性能和强大的安全性

节省时间简化您的生活:只需 5 分钟即可试用 Stackhero 的 Node.js 云托管 解决方案!

默认情况下,Node.js 只使用单核和单线程。若要充分利用所有可用 CPU 核心,建议使用 Node.js 的 cluster API。官方文档见:https://nodejs.org/api/cluster.html

以下是一个简单示例,使用所有可用 CPU 创建 HTTP 服务器:

const cluster = require('cluster');
const http = require('http');
const cpusCount = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // Fork workers
  for (let i = 0; i < cpusCount; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
  });
} else {
  // Workers 共享所有 TCP 连接,这里是 HTTP 服务器
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

  console.log(`Worker ${process.pid} started`);
}