Node.js: 讓程式碼運行於多核心 CPU

本文件是快速開始指南的一部分。請在此處查看完整指南:學習如何在 Stackhero 上快速且安全地部署 Node.js 服務

👋 歡迎來到 Stackhero 文件中心!

Stackhero 提供即時可用的 Node.js 雲端 環境,協助您加速開發流程:

  • 只需一個簡單的 git push,即可在幾秒內部署到生產環境。無需額外工具或手動設定。
  • 支援自有網域,並自動配置 HTTPS 憑證,讓您的應用程式安全無虞,無需額外設定。
  • 自動備份一鍵更新,以及預測性收費,讓您專注於功能開發,Stackhero 為您管理基礎架構。
  • 建構於專屬私有基礎架構之上,確保穩定效能與高安全性。

節省時間,降低營運負擔:只需幾分鐘,您的應用程式就能在 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`);
}