0

私のアプリでは node.js を使用しています。なぜなら、node.js と Mongo は理想的な組み合わせだからです。しかし、私はこれについて疑問に思っています:

私のサーバー アプリは単一のプロセスで実行されます。Node.js は非同期ですが、シングル スレッドです。これは、ノードが一度に 2 つのクエリを mongo サーバーに送信しないことを意味しますか?

サーバー上で、Mongod は 5 つのワーカー プロセスで実行されます。それらは必要ですか?それを 1 つに減らしても問題ありませんか? (もしそうなら、どのように?)

または、ノードアプリを複数のプロセスで効果的に実行する方法があるかもしれません。

4

2 に答える 2

1

これは、ノードが一度に2つのクエリをmongoサーバーに送信しないことを意味しますか?

  1. 実際、Nodeはmongoに同期的にリクエストを送信します。ただし、リクエストの送信はハートビート(通常は低いミリ秒の範囲)で行われます。

  2. 数を減らすことはmongo側で発生し、mongo側は応答を行うという難しいことをしなければなりません。これは、mongoワーカープロセスの目的であり、並行して実行されます(5ワーカーは5スレッドに相当します)注:mongoがこの応答を計算している間、ノードはブロックされません

  3. 最後に、mongoは、(非同期)コールバックを使用してノードでキャプチャした応答を送信します。

ps:したがって、imoはまだクラスター化する必要はありません。そのまま非同期でいいです。(多くのリクエストでmongoをヒットすることは、おそらくIOバウンドであることに加えて、他のCPUが負荷を共有できるように「クラスタリング」することは、その場合はあまり役に立ちません。

hth

于 2012-05-25T00:30:13.870 に答える
0

これは基本的にあなたの質問に答えるはずです:

http://nodejs.org/api/cluster.html

そうでない場合は、コードの特定の部分を実行するノード アプリの子プロセスを作成できます。

于 2012-05-24T10:31:36.887 に答える