保持节点应用程序在azure应用程序服务上运行

2024-03-29

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

如果我重新启动应用程序服务,应用程序将开始工作。

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

比如在 azure 应用服务中使用forever/pm2。


Azure 应用服务中的 node.js 由以下人员提供支持IISNode https://tomasz.janczuk.org/2011/08/hosting-nodejs-applications-in-iis-on.html,它会处理您所描述的一切,包括监视您的进程是否出现故障并重新启动它。

考虑以下 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. GET /
  2. GET /bad
  3. GET /

然后第一个将产生 HTTP 200,第二个将抛出到服务器上并产生 HTTP 500,第三个将产生 HTTP 200,而无需我执行任何操作。 IISNode 将仅检测崩溃并重新启动进程。

因此,您不需要 PM2 或类似的解决方案,因为它是内置于应用服务中的。但是,如果您真的愿意,他们现在有应用程序服务Preview在 Linux 上,它由 PM2 提供支持并允许您配置 PM2。更多关于此here https://azure.microsoft.com/en-us/documentation/articles/app-service-linux-using-nodejs-pm2/。但你已经把它开箱即用了。

另一件需要考虑的事情是始终开启设置 https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/默认情况下处于打开状态:

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

这是问题的另一个可能的根本原因,解决方案是禁用 Web 应用程序的“始终开启”(请参阅​​上面的链接)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保持节点应用程序在azure应用程序服务上运行 的相关文章

随机推荐