不确定这是否是服务结构问题,或者是node.js的问题。
基本上this是我的问题。我部署了node.js应用程序,它运行正常。我重新部署它无法工作的节点应用程序,服务器返回EADDRINUSE
。当我运行netstat -an
时,端口未被使用。好像节点仍然在某个地方运行,有些如何,但没有出现在任务列表等中。
有人有任何想法吗?
答案 0 :(得分:1)
不完全确定,但我相信这是因为我使用的服务器(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 Nair [RajeetN @ MSFT]
Service Fabric还向服务进程发送Ctrl-C并等待服务终止。如果服务没有终止3分钟,则该过程将被终止。