2017-10-30 6 views
5

私が理解しているところでは、Dockerコンテナは複数のスレッドを使用し、Node.jsアプリケーションは1つのスレッドしか使用しません。 Node.jsクラスタリングを処理するpm2のようなものを実行することで、Dockerコンテナで利用可能なすべてのコアを利用できます。Node.jsクラスタリングと複数のDockerコンテナ

Node.jsプロセスをクラスタリングすることで、各Dockerインスタンスの利用率を上げることができますか?もしそうなら、単にコンテナごとに単一のThreaded Node.jsインスタンスを実行するのが好ましいとは思わないでしょうか?

Dockerコンテナが実行中のCPUの数を増減する可能性があるため、副作用があると懸念されます。

答えて

0

まず、ノードクラスタを実行するために本質的にpm2は必要ありません。ノードには、マルチコアマシンを利用するための組み込みのclusters moduleが付属しています。また、インスタンスを縮小することは、作業者の数をハードコードしない限り、実際には影響しません。クラスターを使用してワーカーを生成する方法については、クラスターモジュールのサンプルコードを参照してください。

+0

質問はクラスタ化と複数のドッキング用のコンテナではなく、アプリケーション自体のクラスタリングではないと思います - pm2は単なる例でした:-) – stefanobaldo

0

NodeJSを別のドッカーコンポーネントにクラスタリングすることについて話しているのであれば、それで余分なブーストが得られるとは思いません。あなたのようなNodeJSは、単一のスレッドで実行されるので、pm2(私は実際にそれを使用しています)またはドッカーは負荷を分散するという点で同じ効果を持ちます。

NodeJSには、着信要求をどのように処理するかを処理するWebワーカーという概念がありますが、非ブロッキングアーキテクチャであるため、非常に高速なサーバーでも何百もの要求が処理されます。

私はまだ私が望むドッカーに掘り起こす必要があると認識しますが、私は時間がありませんが、私は1つのドッキング・イメージをサーバーごとに(バーチャルまたは物理的に)持っていて、その内部のノードのインスタンス

この理由は、私はドッカーが私の依存関係を処理したいということであり、私はそれはメモリがターゲットに到達したかエラーが発生したノードを再起動し、自動的に再起動のようなクールな機能を持っているので、PM2は、クラスタ管理を処理したい

+0

"NodeJSにはWebワーカーの概念があります"とはどういう意味ですか? –

+0

おそらくウェブワーカーは最高の用語ではありませんが、私が設定できるmaxSocketsを意味します:http.globalAgent.maxSockets – sfratini

関連する問題