不確定這是否是服務結構問題或node.js問題。服務結構node.js guest應用程序express.js服務器EADDRINUSE
基本上this是我的問題。我部署了node.js應用程序,它工作正常。我重新部署它失敗的節點應用程序,服務器返回EADDRINUSE
。當我運行netstat -an
時,該端口未被使用。這就好像節點仍然在某處運行,有些如何,但不會出現在任務列表等。
任何人有任何想法?
不確定這是否是服務結構問題或node.js問題。服務結構node.js guest應用程序express.js服務器EADDRINUSE
基本上this是我的問題。我部署了node.js應用程序,它工作正常。我重新部署它失敗的節點應用程序,服務器返回EADDRINUSE
。當我運行netstat -an
時,該端口未被使用。這就好像節點仍然在某處運行,有些如何,但不會出現在任務列表等。
任何人有任何想法?
不完全確定,但我相信這是因爲我使用的服務器(express.js)或者說節點沒有關閉並關閉現有連接,導致Windows認爲端口仍在使用中。至少,這就是它的樣子。
我找不到它「正式」記錄,但是從this(引用如下)中可以看到,SF嚮應用程序發送SIGINT以試圖在殺死它之前結束它。
下面的代碼似乎解決我的問題:
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);
});
});
對於Linux節點,我想你會想監聽「SIGTERM」爲好。
我想知道是否有任何補救措施,但在前面提到的情況下,VMSS完全無法使用 - 我無法部署或運行節點Web服務器。如何重新啓動集羣而不破壞它並重新創建它?我現在意識到,你不能只是重新啓動VMSS情況下不管三七二十一,因爲如果你這樣做,顯然是不可撤銷地服務織物完全打破
Rajeet奈爾[RajeetN @ MSFT]
服務織物也發送一個Ctrl-C服務進程並等待服務終止。如果服務未終止3分鐘,則該進程將被終止。