Node.js: 複数 CPU コアでコードを実行する

このドキュメントははじめにガイドの一部です。完全なガイドはこちらからご覧いただけます:Stackhero で Node.js サービスを迅速かつ安全にデプロイする方法

👋 Stackhero ドキュメントへようこそ!

Stackhero は、すぐに使える Node.js クラウド 環境を提供し、開発スピードを加速します:

  • シンプルな git push だけで、数秒で本番環境にデプロイ。追加ツールや手動設定は不要です。
  • 独自ドメインを利用でき、自動 HTTPS 証明書により追加設定なしでアプリケーションのセキュリティを確保します。
  • 自動バックアップワンクリックアップデート予測可能な料金体系で、機能開発に集中できるよう Stackhero がインフラ管理を担当します。
  • プライベートかつ専用インフラ上に構築されており、安定したパフォーマンスと高いセキュリティを実現します。

運用負荷を削減し、時間を節約:わずか数分で Stackhero の Node.js クラウドホスティング 上でアプリケーションを稼働させることができます。

デフォルトでは、Node.js は 1 コア・1 スレッドのみを使用します。すべての 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`);

  // ワーカーをフォーク
  for (let i = 0; i < cpusCount; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
  });
} else {
  // ワーカーは TCP 接続(ここでは HTTP サーバー)を共有します
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

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