3

マルチコア (2CPU * 2Cores = 4Cores) サーバーで実行したい Node.js アプリがあります。このトピックに関する多数のスタック オーバーフロー スレッドを読んだ後、4 つの異なるポートで 4 つの個別のノード インスタンスを開始し、Nginx を使用してそれらの間で負荷を分散することにしました。ノード クラスターでこのアプローチを使用することにしました。

ここに私が答えようとしている私の質問があります:

  1. 2cpu * 2cores/cpu = 4 コア サーバーと 1cpu * 4cores/cpu = 4core サーバーで 4 つのノード インスタンスを起動する方法に違いはありますか。違いはないと思いますが、確認したかっただけです。

  2. サービスを開始するための conf ファイルがあります。この conf ファイルは、実際には/etc/initNode アプリに常駐して起動するスクリプトです。この 1 つの conf ファイルから 4 つのインスタンスを開始する必要がありますか、それとも 4 つの conf ファイルを作成して conf ファイルごとに 1 つのインスタンスを開始する必要がありますか?

    繰り返しますが、後者のアプローチの方が優れていると感じていますが、それを確認したかったのです。

4

2 に答える 2

1

なぜそうすることにしたのですか:

  1. nginx を使用して負荷を分散しますか? haproxy は、この目的に適したソリューションです。
  2. n 個のプロセスを手動で開始するクラスター モジュールがある場合、それを実行しますか?

    n 個の異なるプロセスを開始する場合、n 個の異なるポートをリッスンする必要があります。

    クラスター モジュールを使用する場合、このジョブは内部で行われ、n 個のワーカーが同じポートをリッスンするため、ロード バランサーは必要ありません。ワーカーが死亡した場合は通知が届き、基本的には簡単に管理できます。

すべてのワーカーは同じファイルを開いたり、読み書きしたり、閉じたりできます。n 個の構成ファイルは必要ありません。

于 2013-03-01T22:11:33.773 に答える
0
  1. 経験則としては、コアあたり 1 つのインスタンスが適切ですが、同じサーバー (データベース、redis、memcache、キューなど) でいくつかのサービスも実行する場合は、開始するインスタンスの数を減らして、これらが「競合」しないようにすることをお勧めします。 CPU用。

  2. いずれかのインスタンスがクラッシュしたり、メモリの使用量が多すぎたりするなどの理由で、最終的には個々のインスタンスを再起動する必要があります。したがって、個別のスクリプトが望ましいか、インスタンスを個別にまたは一緒に制御できるスクリプトでさえも望ましいでしょう (最初はより多くの作業が必要です)。

于 2013-03-01T19:26:08.743 に答える