2016-03-31 35 views
1

Google Compute Engineでホストされているノードで作成されたRESTful Web APIと、Mongo DBで使用しているデータベースを使用するiOSアプリケーションを構築しました。また、Nginxは、要求をノードjsサービスにルーティングするWebサーバーとして構成されています。PM2で追加のプロセスが実行されています

Google Compute Engineノードのjsは、自動スケーリング機能をオンにしたロードバランサの背後で動作しています。 Webサービスは、iOSアプリのユーザーだけでなく、Google Compute Engineの別のインスタンスに座っているバックグラウンドジョブによっても使用されます。

Google Compute Engineに8台のコアマシンがあるため、コア数を8に設定してPM2を使用してノードjsサービスを開始しました。

これはPM2を起動すると8つのプロセスが実行されるが、8つ以上のプロセスが時々実行されていることを示している。また、 'sudo pm2 kill'コマンドを使用してPM2をkillしようとすると、ノードjsサービスの開始時に開始されたプロセスが、 'sudo lsof -i -P | grep -i 'listen'私はprocessessのいくつかがまだ実行中で、Node jsサービスが実行されているポートを占有していることがわかります。したがって、Node jsサービスを再開する前に、余分なPM2プロセスを強制終了してから、PM2を再起動する必要があります。以下は

私のnginxの設定ファイル

upstream node { 
    server 127.0.0.1:5001; 
} 

server { 
    listen 80; 
    server_name api.dev.yellfy.com; 
    location/{ 
     #proxy_pass http://127.0.0.1:5001; 
     proxy_pass http://node; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
     client_max_body_size 300M; 
     proxy_read_timeout 600s; 
     proxy_connect_timeout 600s; 
    } 
} 

である私は、余分なプロセスPM2ランニングの背後にある理由は何ができるかのように理解するのに役立ちます。 5.5.0
PM2 - - 1.0.0
モンゴDB - 3.0.4
nginxの - 1.6以下の参考のために

は私が

テクノロジ・スタック

ノードJSを使用しています技術スタックであります.3
CentOS Linux 7.2.1511(コア)

+1

クラスタを使用しているとき、私はPM2と同様の問題に直面している、そのPID ** PS -auxを見つけることによって、PM2プロセスを殺してみてください| grep PM2 **それはすべてのプロセスを終了させるはずです – AJS

+1

私は 'pm2 kill'オプションに慣れていません([docs](https://github.com/Unitech/pm2)には記載されていません)。恐らく 'kill 'はUNIXの' kill -9'コマンドと同等であり、事実上プロセス自体を殺してしまうかもしれませんし、spawnもないかもしれません。 'pm2 stop all'コマンドを使用しても同じ動作をしますか? (または、 'restart'、' delete'、あなたが達成しようとするものは何ですか?)個人的には、私は 'pm2'自体を維持する以外に' sudo'を追加する理由をまだ見つけていません。(これは私にとってはグローバルインストールです) –

+1

pm2をアップデートできますか?これは最近の修正されたバグのように感じます(問題に私の手を差し伸べることはできません)。 – soyuka

答えて

0

pm2を使用してプロセスを停止しようとしましたか?あなたはPM2経由を停止すると

pm2 stop app.js 

を停止する

その後
pm2 start app.js 

あなたはPM2が正常にシャットダウンすることができますされていない殺します。サーバーが再起動したら、プロセスが再開されると思います。

http://pm2.keymetrics.io/docs/usage/process-management/

関連する問題