【问题标题】:Keep a node application running on azure app service让节点应用程序在 azure app 服务上运行
【发布时间】:2016-12-08 14:16:30
【问题描述】:

我已经在 azure 的应用服务上部署了一个节点 js Web 应用程序。问题是我的应用程序偶尔会因未知原因被杀死。我已经使用 kudu 对所有日志罚款进行了详尽的搜索。

如果我重新启动应用服务,应用就会开始工作。

有什么方法可以在我的节点应用程序崩溃后重新启动它。无论如何都要永远奔跑。例如,如果部署在 IIS 中的 asp.net 代码发生任何错误,IIS 永远不会崩溃,它会继续为其他传入请求提供服务。

类似于在 azure 应用服务中使用 forever/pm2。

【问题讨论】:

    标签: node.js azure azure-web-app-service iisnode


    【解决方案1】:

    Azure 应用服务中的 node.js 由 IISNode 提供支持,它负责处理您描述的所有事情,包括监控您的进程是否出现故障并重新启动它。

    考虑以下 POC:

    var http = require('http');    
    http.createServer(function (req, res) {
        if (req.url == '/bad') {
            throw 'bad';
        }
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('bye');
    }).listen(process.env.PORT || 1337);
    

    如果我在 Web 应用中托管它并发出以下请求序列:

    1. 获取 /
    2. GET /坏
    3. 获取 /

    然后第一个将产生 HTTP 200,第二个将抛出服务器并产生 HTTP 500,第三个将产生 HTTP 200,而我无需做任何事情。 IISNode 只会检测到崩溃并重新启动进程。

    因此,您不需要 PM2 或类似的解决方案,因为它内置于应用服务中。但是,如果您真的想要,他们现在在 Linux 上提供了 App Services Preview,它由 PM2 提供支持并允许您配置 PM2。更多关于这个here。但是,您已经可以开箱即用了。

    要考虑的另一件事是Always On setting,默认情况下是打开的:

    默认情况下,如果 Web 应用程序空闲一段时间,则会卸载它们。这使系统可以节省资源。在基本或标准模式下,您可以启用 Always On 以始终保持应用程序加载。如果您的应用连续运行 Web 作业,则应启用 Always On,否则 Web 作业可能无法可靠运行。

    这是您问题的另一个可能根本原因,解决方案是为您的 Web 应用禁用 Always On(请参阅上面的链接)。

    【讨论】:

    • 不确定是什么问题。看起来 iisnode 没有自动重启
    • 尝试通过 Web App 中的日志流选项启用详细日志记录并监控控制台输出
    • 这是否回答了您最初的问题?如果有,请标记为答案
    • 不幸的是,启用了详细信息,没有得到任何有用的信息。仍在寻找解决方案
    • 解决什么...?您的问题是关于检测 node.exe 中的故障并自动重新启动,对吗?
    【解决方案2】:

    我真的要感谢 iaysk 对这个问题的支持。

    问题不是我所怀疑的。实际上节点服务器在失败时正确地重新启动。

    有一个不同的问题。为什么我的网站没有响应是出于不同的原因。这就是发生的事情-

    我们已经使用 rethinkdbdash 连接到 rethinkdb 数据库,并且我们正在使用连接池。存在编码/设计问题。我们与 socket.io 一起实现了大约 15 个更改提要。并且为每个登录的用户初始化更改提要。这增加了池中的活动连接数量。并且 rethinkdbdash 在池中的默认限制为 1000 个连接,并且由于存在大量实时连接,池中的所有可用连接都已用尽,导致不再有可用连接。因此,请求正在等待一个打开的连接并且它没有得到任何可用的连接,因此一直在等待阻止任何新的请求提供服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 2019-10-04
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 2017-05-31
      • 2019-06-02
      相关资源
      最近更新 更多