ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js のマルチプロセス モジュール Cluster とその使用方法の詳細な紹介

Node.js のマルチプロセス モジュール Cluster とその使用方法の詳細な紹介

黄舟
黄舟オリジナル
2017-05-27 10:44:571454ブラウズ

Node.js はシングルスレッドであり、単一の Node.js プロセスでは複数のコアを完全に活用できないことはよく知られています。 v0.6.0 から、Node.js に新しいクラスター モジュールが追加されました。これにより、Node.js で Web サービスを開発する際にマルチコア マシンを最大限に活用しやすくなります。この記事では、Node.js のマルチプロセス モジュール Cluster に関する関連情報を主に紹介します。必要な方は参照してください。

はじめに

プロセス、ノンブロッキング操作、非同期イベント駆動型です。 Nodejs のこれらの機能は、いくつかの問題を非常にうまく解決できます。たとえば、サーバー開発では、リクエストの同時処理が大きな問題となり、ブロック機能はリソースの無駄と時間の遅延を引き起こします。イベント登録と非同期機能により、開発者はリソースの使用率を向上させることができ、パフォーマンスが向上します。 Node.js はシングルプロセス、シングルスレッドモードを採用しているため、マルチコアハードウェアが普及している今日の環境において、シングルコアのパフォーマンスに優れた Nodejs がマルチコア CPU をどのように活用できるのでしょうか。創設者の Ryan Dahl は、複数の Nodejs プロセスを実行し、何らかの通信メカニズムを使用してタスクを調整することを推奨しています。現在、多くのサードパーティの Node.js マルチプロセス サポート モジュールがリリースされており、NodeJS バージョン 0.6.x 以降では、負荷を共有するために「同じソケットを共有する」プロセスのグループを作成できるクラスター モジュールが提供されています。プレッシャー。 。

この記事は、クラスター モジュールに基づいて、マルチコア CPU での Node.js プログラミングについて説明しています。

クラスターモジュールの紹介

nodejsが提供するクラスターモジュールはまだ実験段階にあり、v0.10.7の公式ドキュメントでは以下のようにモジュールのリリース情報を見ることができます。

このモジュールについて Node の機能は、ソースドキュメントでは「Node の単一のインスタンスが単一のスレッドで実行されます。マルチコア システムを利用するために、ユーザーは、ノード プロセスのクラスターを起動して、これは次のことを意味します: ノード この例はシングルプロセス モードで実行されます。場合によっては、マルチコア システムのリソースを最大限に活用するために、ユーザーはノード プロセスのグループを実行して負荷を共有する必要があります。


クラスターの使い方の紹介

まず、このモジュールのサンプルアプリケーションコードを投稿して、詳細な分析を実行します。コードは次のとおりです:

Stability: 1 - Experimental

このコードは非常に単純で、メインスレッドです。が現在実行中の js ファイルである場合、メインスレッドはローカル システムのコア数に基づいて子プロセスを作成します。すべてのプロセスはリスニング ポート 8000 を共有します。リクエストが開始されると、メインスレッドはリクエストを子プロセスにランダムに割り当てます。

このコードは、どのプロセスがリクエストを処理するかを出力できます。

console.log('Worker #' + cluster.worker.id + ' make a response');問題分析

リクエストが開始されると、システムはそのリクエストを処理のためにどのプロセスに渡すかを決定すると前述しました。システムに完全に依存するこのタイプのロード バランシングには重要な欠陥があります。Windows、Linux、Solaris では、特定のサブプロセス (通常は最後に作成されたサブプロセス) の受け入れキューが空である限り、システムは複数の接続を使用する 同じサブプロセスに割り当てられると、プロセス間で非常に不均一な負荷が発生します。特に長いコネクションを使用する場合、単位時間当たりの新規接続数が多くないため、子プロセスの受付キューが空であることが多く、同じプロセスにコネクションが割り当てられ続けることになります。したがって、この種のロード バランシングは、受け入れキューのアイドル状態に完全に依存します。ロード バランシングは、短い接続が使用され、同時実行性が非常に高い場合にのみ実現できます。ただし、この時点では、システムの負荷が非常に高くなります。システムが不安定になります。

概要

以上がNode.js のマルチプロセス モジュール Cluster とその使用方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。