node-clusterize-cliを使用したnodejs Webサーバーのクラスタリング

過去6か月間、私はNodeJSがうなり声を上げてしまうほどの大規模なWebアプリケーションを開発してきました。 実稼働環境への展開に関しては、「アプリケーションインスタンスで複数のスレッドを使用しないのはなぜですか」と考えました。

クラスターを実現すると、その使用による生産性が1.5倍増加することがわかりました。これは、わずかな労力を費やしただけでも、悪くないことです。 しかし、私はそこで停止せず、特定のアプリケーションからクラスターを開始する役割を担うコードを解くために、クラスターを操作するための便利なCLIを作成することにしました。 さらに、クラスターを悪魔化して、プロセス内で静かにハングアップし、倒れたワーカーを増やし、ログに書き込み、他の人の気を散らさないようにしたかったのです。

これは、 node-clusterize-cliの表示方法です。これは、アプリケーションコードに影響を与えないコマンドラインユーティリティです。 元のクラスターモジュールNodeJSに基づいています。


仕事の仕組み

モジュールはシンプルです-まず、必要なワーカー数(デフォルトではコアごとに2つのプロセス)が開始するマスタープロセスを開始し、CLIインターフェイスからマスタープロセスのバインドを解除し、デーモンとして動作させます。 さらに、マスタープロセスはワーカーで発生する可能性のあるエラーメッセージをリッスンし、落ちた仲間を自動的に再起動します。 「クラスター」と呼ばれるNodeJS APIのモジュールは、各リクエストがランダムプロセスで処理されることを保証します。

使用する

一般に、すべては些細なことです:

#    $ npm i -g node-clusterize-cli #   $ clusterize --app ./app.js --workers 32 --log ./cluster.log 


また、便宜上、実行中のクラスターのリストを取得する方法と、それらを強制終了する方法があります。

 # ,  `ps -eo pid,comm | grep "clusterize master"` $ clusterize list 53416 app.js #   `kill -9 CLUSTER_PID` $ clusterize kill 53416 


詳細については、GitHubのclusterize -hおよびreadmeのツールチップを参照してください。

githubのリポジトリ
負荷テストログab

Source: https://habr.com/ru/post/J208914/


All Articles