2016-08-10 21 views
2

私はオンラインで検索しましたが、「ノードはマルチコアCPUでどのように動作するのですか?ノード:1つのコア、多くのプロセス

しかし、コアが1つだけのマシンをお持ちの場合は、いつでも1つのプロセスしか実行できません。 (私はここでタスクスケジューリングを検討しています)。ノードは単一のスレッドモデルを使用します。

私の質問:1つのコアで複数のノードプロセスを実行する意味がありますか?また、プロセスがポートをリッスンするWebサーバーである場合、1つのプロセスだけがリッスンできるとすれば、これはどのように機能しますか?

答えて

4

私の質問: 複数のノードプロセスを1つのコアで実行することは意味がありますか?

はい、いくつかのシナリオがあります。以下の詳細を参照してください。

、プロセスがポートでリッスンWebサーバであれば、どのように今までに一つだけのプロセスを聞くことができることを考える仕事にこれを ことができますか?

node.jsクラスタリングモジュールは、目的のポートに1つのリスナーが存在するシナリオを作成しますが、着信要求はすべてのクラスタ化プロセス間で共有されます。詳細は次のとおりです。

クラスタリングモジュールを使用して、同じポートで受信要求を処理するように構成された複数のプロセスを実行できます。着信要求が異なるクラスタ化プロセス間でどのように共有されているかを知りたい場合は、this blog postの説明を参照してください。簡単に言えば、目的のポート上にリスナが1つだけ存在し、着信要求はさまざまなクラスタ化プロセス間で共有されます。

コアを持つよりも多くのプロセスの恩恵を受けることができるかどうかは、どのタイプのメリットが必要かによって決まります。すべての非同期I/Oを持つ適切に書かれたサーバーを持っている場合、コアよりも多くのプロセスを追加すると、(サーバーが処理できる1秒あたりの要求数で測定した)全体のスループットは向上しない可能性があります。

しかし、あなたの要求にCPUの処理が多すぎると、OSが複数のプロセスの間でCPUを「共有」するため、複数のプロセスを追加すると、同時リクエスト間で少し公平なスケジューリングが可能になります。これは(プロセス間でCPUを切り替えるタスクのオーバーヘッドが増えるため)全体的なスループットをわずかに低下させる可能性がありますが、複数の要求が同時に処理されている場合でも要求処理をより多くする可能性があります。

CPUの処理量があまり多くなく、ほとんどの場合I/Oを待っているだけであれば、コアより多くのプロセスを追加する利点はありません。

実際には、最適化するものと状況によります。

関連する問題