2017-02-10 6 views
0

これはnode.js.とのサービスファブリックの問題、または問題であるかどうかわかりません基本的にはサービスファブリックは、ゲストアプリケーションexpress.jsサーバーをNode.jsのEADDRINUSE

thisは私の問題です。私はnode.jsアプリケーションをデプロイしてもうまく動作します。サーバーがEADDRINUSEを返して、正常に機能しないノードアプリケーションを再デプロイします。 netstat -anを実行すると、そのポートは使用されていません。ノードはまだどこかで動作しているようですが、タスクリストなどには表示されません。

誰でも知っていますか?

答えて

1

私が使用していたサーバー(express.js)、つまりノードはシャットダウンしていないため、既存の接続を閉じていないため、ポートがまだ使用中であると考えることができます。少なくとも、そういう感じです。

"公式に"文書化されていませんが、this(以下引用)から、SFがSIGINTをアプリケーションに送信して終了させ、終了させようとしています。

次のコードは、私の問題が解決するように見える:Linuxのノードの場合

var app = express(); 
var server = app.listen(17500); 

if (process.platform === "win32") { 
    var rl = require("readline").createInterface({ 
     input: process.stdin, 
     output: process.stdout 
    }); 

    rl.on("SIGINT", function() { 
     process.emit("SIGINT"); 
    } 
} 

process.on("SIGINT", function() { 
    server.close(function() { 
     process.exit(0); 
    }); 
}); 

を、私はあなたにも「SIGTERM」をリッスンしたいと思いますと仮定します。

上記のシナリオでは、VMSSは完全に使用できない - これはノードWebサーバーを展開することも、実行することもできませんでした。どのようにしてクラスタを破棄せずに再構築し、再作成するのですか?私は今あなたが


Rajeetナイール[RajeetN @ MSFT]

サービスファブリックも送信

明らかに取り返しのつかない、ということをすれば、サービスの生地が完全に壊れるので、あなただけの行き当たりばったりVMSSインスタンスを再起動することはできません実現しますプロセスにサービスするためのCtrl-C、サービスの終了を待ちます。サービスが3分間終了しない場合、プロセスは強制終了されます。

関連する問題