Service Fabric node.js 来宾应用程序 express.js 服务器 EADDRINUSE

Service Fabric node.js guest application express.js server EADDRINUSE

不确定这是服务结构问题,还是 node.js 的问题。

基本上this是我的问题。我部署了 node.js 应用程序,它工作正常。我重新部署了它无法工作的节点应用程序,服务器返回 EADDRINUSE。当我 运行 netstat -an 端口未被使用时。就好像节点还在某个地方 运行ning 一样,但没有出现在任务列表等中。

有人有什么想法吗?

不完全确定,但我相信这是因为我使用的服务器 (express.js),或者更确切地说是节点,没有关闭并关闭现有连接导致 windows 认为端口仍在使用中。至少,看起来是这样。

我找不到它 "officially" 的记录,但是从 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 实例 willy-nilly 因为如果你这样做,服务结构会完全中断,显然是不可撤销的


Rajeet Nair [RajeetN@MSFT]

Service Fabric also sends a Ctrl-C to service processes and waits for service to terminate. If the service doesn't terminate for 3 minutes, the process is killed.