この質問を理解するためにいろいろ調べましたが、明確な説明が得られませんでした。クラスター化されたアプリはスケールアウトできますが、フォークされたアプリはスケールアウトできないという唯一の違いがあるのでしょうか?
PM2の公開サイトでは、クラスタモードでできることが説明されています。これらの特徴しかし、フォーク モードの利点については誰も言及していません (おそらく、それはNODE_APP_INSTANCE
変化する可能性があります)。
Cluster は Fork の一部であるように感じます。Fork は一般的に使用されているようです。つまり、PM2 の観点からは、Fork は単に「フォークされたプロセス」を意味し、Cluster は「スケールアウト可能なフォークされたプロセス」を意味すると思います。では、なぜ Fork モードを使用する必要があるのでしょうか?
ベストアンサー1
fork_mode
との主な違いは、 cluster_mode
pm2にどちらかを使用するよう指示することです。子プロセス.フォークAPIまたは集まるAPI。
これは内部的に何を意味するのでしょうか?
フォークモード
モードを基本的なプロセス生成として採用しますfork
。これにより を変更して、pm2 でまたはサーバーexec_interpreter
を実行できるようになります。はい、 は子プロセスを開始するために使用される「コマンド」です。デフォルトでは、pm2 は を使用するため、次のような処理が行われます。php
python
exec_interpreter
node
pm2 start server.js
require('child_process').spawn('node', ['server.js'])
このモードは、多くの可能性を実現するため、非常に便利です。たとえば、事前に確立されたポートで複数のサーバーを起動し、HAProxy または Nginx によって負荷分散することができます。
クラスターモード
は、Node.js クラスタ モジュール (例: 、メソッドなど) にアクセスするため、そのままcluster
でのみ動作します。プロセスは複数のインスタンスに自動的にフォークされるため、これはゼロ構成プロセス管理に最適です。たとえば、のインスタンスを 4 つ起動し、クラスタ モジュールに負荷分散を処理させます。node
exec_interpreter
isMaster
fork
pm2 start -i 4 server.js
server.js