私はExpressJSアプリケーションでpm2プロセスマネージャを使用しようとしています。最初のインスタンスは実行され、正常に動作しますが、他のインスタンスはEADDRINUSEで絶えずクラッシュし、何度も何度も実行されます。だから私は何が間違っているのだろうと思っていますか?pm2はexpressjsの複数のインスタンスを作成できません - EADDRINUSEポート使用中のエラー
私は、次のコマンドを使用して、PM2を実行します。PM2用
pm2 start process.json
process.json設定ファイルは次のようになります。
{
"apps": [
{
"name": "clinical-trials",
"script": "./bin/www",
"instances": 0,
"env": {
"PORT" : 4000,
"NODE_ENV": "development"
},
"env_production": {
"PORT": 4444,
"NODE_ENV": "production"
},
"env_local": {
"PORT" : 4000,
"NODE_ENV": "local"
}
}
]
}
エクスプレス./bin/www
は、次のコードが含まれています。では
var port = normalizePort(process.env.PORT || app.locals.config.port);
app.set('port', port);
var server = http.createServer(app);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
PM2リポジトリのフォルダ例8000ポートをリッスンする子プロセスがある:つのインスタンスを実行0 https://github.com/Unitech/pm2/blob/master/examples/child.js 及び設定ファイル:そのPM2はフォークモードの代わりに、クラスタ内のインスタンスを実行しようとしたに
https://github.com/Unitech/pm2/blob/master/examples/apps/all-pm2.json
各ポートは1つのインスタンスでのみ使用できます。 – alexmac
'process.json'の' instances'フィールドを意図的に0に設定しましたか? –
あなたは 'pm2 start process.json'を正常に起動してから' pm2 start process.jsonを実行します--env local'はEADDRINUSEを持っていますか? –