2016-04-13 7 views
0

私は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
+0

各ポートは1つのインスタンスでのみ使用できます。 – alexmac

+0

'process.json'の' instances'フィールドを意図的に0に設定しましたか? –

+0

あなたは 'pm2 start process.json'を正常に起動してから' pm2 start process.jsonを実行します--env local'はEADDRINUSEを持っていますか? –

答えて

0

問題がありました。問題を解決するために、"exec_mode": clusterprocess.jsonファイルに追加する必要がありました。 :

{ 
    "apps": [ 
    { 
     "name": "clinical-trials", 
     "script": "./bin/www", 
     "instances": 0, 
     "exec_mode": "cluster", 
     "env": { 
     "PORT" : 4000, 
     "NODE_ENV": "development" 
     }, 
     "env_production": { 
     "PORT": 4444, 
     "NODE_ENV": "production" 
     }, 
     "env_local": { 
     "PORT" : 4000, 
     "NODE_ENV": "local" 
     } 
    } 
    ] 
} 
関連する問題