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

时间:2017-02-10 16:18:40

标签: node.js express azure-service-fabric

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

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

有人有任何想法吗?

1 个答案:

答案 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分钟,则该过程将被终止。