web-dev-qa-db-ja.com

クラスターモードでpm2を使用してnode.jsアプリを起動するにはどうすればよいですか?

オクタコアプロセッサを搭載したubuntu14.04でpm20.12.8からアプリを起動しようとしています。 gitハブのreadmeには、クラスターモードでノードアプリを実行するための非常に簡単なコマンドがあります。

#クラスターモード

$ pm2 start app.js -i 0        **# Will start maximum processes with LB depending on available CPUs**
$ pm2 start app.js -i max      **# Same as above, but deprecated yet.**

しかし、上記のコマンドは機能していません。これらのコマンドを実行しようとすると、pm2によって1つのインスタンスのみがリストされます。

どうして?なにか提案を

ありがとう

13
Hitu Bansal

一定数のプロセスを開始しようとしましたか?つまり.

pm2 start app.js -i 2 //should start two instances.

「pm2monit」は何を示していますか?

また試してみてください

pm2 stop all
pm2 delete all 

その後

pm2 start app.js -i 0

pm2でプロセスを停止すると、実行されていなくても1つのCPUが予約されます。常にpm2deleteを使用する必要があります

49
Holger Will

プロセスファイルを使用してpm2を管理しようとしているため、プロセスファイルは次のようになります。

    // ecosystem.js
    {
    "apps" : [{
      "name"      : "API",
      "script"    : "server.js",// name of the startup file
      "instances" : 4,          // number of workers you want to run
      "exec_mode" : "cluster",  // to turn on cluster mode; defaults to 'fork' mode 
      "env": {
        "PORT"      : "9090" // the port on which the app should listen
      }
      // for more options refer : http://pm2.keymetrics.io/docs/usage/application-declaration/#process-file
    }]
    }

次のコマンドを使用してこのアプリを実行し、それぞれ開始および停止します。

$ pm2 start ecosystem.js
$ pm2 stop ecosystem.js
9
riddhi_agrawal

新鮮なプロセスのために

pm2 start app.js --name "my-node-app" -i 2 // to create 2 process

既存の実行中のプロセスを作成します。フォークモードの場合は、現在実行中のプロセスを停止して削除する必要があります。そうすれば、それだけがクラスターモードを作成できます。

pm2 stop my-node-app
pm2 delete my-node-app
pm2 start app.js --name "my-node-app" -i 2 // to create 2 process

ここで最良の情報を得ることができます: pm2クラスターモード

クラスタモードを有効にするには、-iオプションを渡すだけです。

pm2 start app.js -i max

maxは、PM2が使用可能なCPUの数を自動検出し、可能な限り多くのプロセスを実行することを意味します

またはjs/yaml/jsonファイル経由:

module.exports = {
  apps : [{
    script    : "api.js",
    instances : "max",
    exec_mode : "cluster"
  }]
}

注:各インスタンス間の負荷分散をPM2が認識できるように、exec_modeをクラスターに設定する必要があります。デフォルトでは負荷分散は行われません。

次に、プロセスファイルを開始します。

pm2 start processs.json-iまたはinstancesオプションは次のようになります。

0/maxは、アプリをすべてのCPUに分散します

-1すべてのCPUにアプリを分散させる-1

アプリを多数のCPUに分散させるための数値。

1
Sushil

このプロジェクトを通常モード(fork_mode)で開始する可能性があると思います。したがって、pm2は開始オプションを記憶するため、クラスターモードに変更する前にすべてのプロセスリストを削除する必要があります。

pm2 delete all
pm2 start app.js -i [NUMBER_OF_INSTANCE|max]
1
vengleab so