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`);
}