2017-05-27 8 views
2

の労働者の最適な数のマルチコアプロセッサ上でnodejsをクラスタリングI usually see examples saying -nodejs - クラスタ

const numCPUs = require('os').cpus().length; 
for (let i = 0; i < numCPUs; i++) { 
    cluster.fork(); 
    } 

私の質問がある -

  1. マルチコアプロセッサは、ウェブを実行している場合アプリケーションはリバースプロキシを終了してssl(cpu intensive)、gzipping(cpu intensive)などの処理を行います。 (メインnodejsサーバー用)?

  2. 最適な労働者数を見つけるにはどのようなテストを行うべきですか?

+0

特定の負荷でCPUの観点から必要なプロセスに関する量的データを提供していないので、代表的な負荷テストを考案し、いくつかの異なる数のnodejsは 'numCPUs'まで処理して、どれが全体的なスループットが最も優れているかを確認します。意味のある量的データがあっても、意思決定を検証するためにテストを実行する必要があります。 – jfriend00

+1

カップルがあまりにも多くのプロセスは、おそらく十分ではないよりも問題の少ないです。アイドル状態のCPUが残っていて、無駄な容量を無駄にすることはありません。プロセスが多すぎると、コンテキストスイッチをいくつか追加して、それらの間でCPUをスワップします。 – jfriend00

+0

私は過去のこの正確なことを、私の答えにある情報を使って本番で実装しました。それ以上のご質問がありましたらお知らせください。 @ jfriend00によってdownvotedされましたが、私はあなたがこのソリューションが動作していることを保証することができ、強力な生産です。 – arboreal84

答えて

-2
  1. あなたはset an affinity for the process to a set of coresをすることができます。

  2. コアごとに1つのワーカーが必要です。利用可能なコアとは、他のプロセスによって大きく利用されないコアを意味します。

すべてがうまくあることを確認するには、あなたの(CPU load/number of cores)が提供する非常に少数の異なるサービス/プロセスと、あなたのマシンを試してみてください1.

以下でなければなりません。これは、最初は無駄に見えるかもしれませんが、カスケード障害の影響を制限することによって、MMTDとMMTRのインシデントに役立ちます。

注:この質問は通常、別のスタックエクスチェンジサイトのServer Faultでお寄せください。

+0

これは、OPが求めている質問のいずれにも答えないようです。彼らの質問は、具体的には、同じホスト上でCPUを大量に使用する他のプロセスが実行されている場合です。問題は、nodejsだけでなく、総スループットを最適化する方法です。 – jfriend00

+0

可能であれば、各ノードプロセスを排他的なコアにすることをお勧めします。 – arboreal84

+0

OPはクラスタ・フォームで実行するnodejsプロセスの数を確認しています。 OSは親和性を決定します。サーバ上で他に多くのことが起こっているときは、すべてのCPUをnodejに渡せるだけではありません。 – jfriend00

関連する問題