Anu*_*pta 3 azure node.js iisnode azure-web-sites
我已经在azure上的app服务上部署了一个节点js web应用程序.问题是我的申请偶尔会因为不明原因而被杀.我已经使用kudu对所有日志罚款进行了详尽的搜索.
如果我重新启动应用服务,应用程序开始工作
有没有什么办法可以在崩溃后重新启动我的节点应用程序.无论如何都要永远奔跑.例如,如果在IIS中部署的asp.net代码中发生任何错误,IIS永远不会崩溃,它会继续提供其他传入请求.
在azure app服务中使用ever/pm2之类的东西.
ita*_*ysk 10
Azure应用服务中的node.js由IISNode提供支持,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);
Run Code Online (Sandbox Code Playgroud)
如果我在Web应用程序中托管它并发出以下请求序列:
然后第一个将产生HTTP 200,第二个将抛出服务器并产生HTTP 500,第三个将产生HTTP 200,而我不必做任何事情.IISNode将只检测崩溃并重新启动该进程.
所以你不应该需要PM2或类似的解决方案,因为这是内置于App Services.但是,如果您真的想要,他们现在可以在Linux上安装App Services Preview,它由PM2提供支持并允许您配置PM2.更多关于这里.但是你又一次开箱即用.
另一件需要考虑的事情是Always On设置默认情况下是打开的:
默认情况下,如果Web应用程序闲置一段时间,则会将其卸载.这使系统可以节省资源.在"基本"或"标准"模式下,您可以启用"始终开启"以始终加载应用程序.如果您的应用运行连续的Web作业,则应启用Always On,否则Web作业可能无法可靠运行.
这是您的问题的另一个可能的根本原因,解决方案是为您的Web应用程序禁用Always On(请参阅上面的链接).
| 归档时间: |
|
| 查看次数: |
2602 次 |
| 最近记录: |