PM2の場合、通常、この構成を使用する必要はありません。一般的に、それは次のようになります。
PM2で
var cluster = require('cluster');
var http = require('http');
var os = require('os');
var numCPUs = os.cpus().length;
if(cluster.isMaster){
for (var i = 0; i < numCPUs; ++i) {
cluster.fork();
}
} else {
http.createServer(function(req, res) {
res.writeHead(200);
res.end("hello world");
}).listen(8080);
}
上記の等価です:
あなたが話題
here
によりアップ読むことができます
var http = require('http'); http.createServer(function(req, res) { res.writeHead(200); res.end("hello world"); }).listen(8080);
pm2 start app.js -i <number of instances>
アップデート:コマンドラインのargumを渡すことで、マスタとスレーブを区別することができますents。ここで は、例えばecosystem.jsonです:
{
"apps" : [
{
"name": "Master",
"script": "app.js",
"args": ["master"],
"instances": "1",
},
{
"name": "Slave",
"script": "app.js",
"args": ["slave"],
"instances": "3"
}
],
...
その後、次の操作を行うことができます。PM2は、内部的に子プロセスを作成するには、「クラスタ」を使用しています
argv = process.argv.slice(2) //stripe 'node', 'app.js' away
if (argv[0] === 'master'){
// ...
} else {
// ...
}
PM2はワーカーを自動的にフォークするのに役立ちますが、worker.on( 'message'、messageHandler)のようなものを実装することはできません:workerから受け取ったメッセージを処理する:( – thelonglqd
"master"を別に生成する? PM2では、マスターとスレーブの区別に役立つインスタンスのenv変数を指定することができます。 – bublik42