あなたの理解が大まかに正しいです、私の懸念は、あなたがそうする必要がないときにそれを使用しているということです...あなたの質問では、それは事を行うシングルスレッドのイベントモデルです。シングルスレッド化されているにもかかわらず、イベントモデルでは、メインイベントループをブロックせずにコードを実行することができます(CPU使用率が高いVERY CPUを使用していない限り...データベース要求とファイル処理は含まれません)。あなたが望むことをするために追加のdynoを起動する必要はありません。
dynoをシングルプロセッサコンピュータと考えてください。シングルプロセッサーを搭載したマシンで何ができるのかは、追加料金やダイノスを使用せずにダイノーで行うことができます。しかし、dynoは、単一のコアプロセッサコンピュータが利用できるメモリよりもかなり少ないメモリしか持っていません。したがって、あなたがスポーンしたい任意のサブプロセスは、別のdynoを実行する必要はありません。あなたが実行したいすべてのマスタープロセスは、独自のdynoを必要とします。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('An amount of data that will take 1 second to send');//This will not block the event loop
}).listen(1337, '127.0.0.1');
var http = require('http');
http.createServer(function (req, res) {
while(true) {
break after 1 second; //this will block the event loop for 1 second
}
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
上記のコードの2つのサーバーを考えてみましょう。両方のサーバーは、約1秒の作業が必要です。最初の例では、1秒間に何千もの要求を処理できます.2番目の例は1です。データ、データベース要求、サーバー要求、ファイルIOなどを送信すると、すべてが最初の例として動作します。 2番目の例。 2番目の例のようなものがあれば、別の言語を選ぶほうが良いでしょう。それは非常にうまく設計されていないユースケースのためにノードを動作させることです。
データベースリクエストとファイル処理を非同期的に行うために、別々のノードプロセスを起動する必要はありません。そうしなくても、nodejsの利点があります。非決定的な数のワーカー「スレッド/プロセス」を生成する場合は、NodeJSを間違って使用しています。そしてその答えで、私はあなた自身の質問に答えることができるはずだと信じています。詳細をご希望の場合はお知らせください。 – ChrisCM
あなたのお返事ありがとう、Chris。私は自分自身を正しく説明していないかもしれません。ノードの知識は、ノード初心者の本で詳しく述べられていないほど広がらず、 'var exec = require(" child_process ")。exec;'高価なシェル操作を実行して非ブロッキングコードを示すために 'exec'関数を使用します。したがって、この例では、メインプロセスが新しい要求を引き続き受け取り、後で初期要求の応答を表示するコールバックを受け取ることができるように、シェル操作が別のプロセスに遅延されています。 – mibbler
私は答えとして私のコメントを提出しました。 – ChrisCM