如何在aws elastic-beanstalk上自动重启节点应用程序

Hol*_*Man 18 amazon-web-services node.js amazon-elastic-beanstalk

我用谷歌搜索了这个问题一段时间但找不到答案.我的问题是在aws elastic-beanstalk服务器上部署nodejs应用程序时,我希望如果应用程序崩溃,nodejs应用程序将自动重启.

实际上很少有nodejs包已经通过命令行支持这个,例如永远,但是从控制台管理或awscli安装这个包并执行它以实现自动重启没有简单的方法.

我想知道你如何解决aws eb上的重启问题?

rya*_*man 31

我已经确认(截至2015年3月11日)EB确实为您重新启动了节点.

为了确认,我在我的应用中添加了一个隐藏的查询参数:

if (req.query.testcrash == 'true') {
    setTimeout(function(){
        undefined.crashMe();
    }, 100);
}
Run Code Online (Sandbox Code Playgroud)

然后在日志中验证发生了异常,并且我的应用程序已重新启动.

以供参考:

  • 我的EB/EC2配置是"运行Node.js的64位Amazon Linux 2014.09 v1.0.9"
  • 使用nginx和节点0.10.31

  • 任何其他详细说明此行为及其内部管理方式的链接或文档? (2认同)
  • 它只需使用upstart的respawn选项即可。默认情况下,它的重生限制设置为最多30次重新启动(最多60秒),如果该进程重新启动的次数大于该时间内的重新启动次数,则除非手动完成,否则不会再次启动。 (2认同)
  • @RobJohansen:它在新贵脚本中的/etc/init/nodejs.conf中。有两行,“重生”和“重生限制30 60”。在upstart中,有关此文档的文档位于<http://upstart.ubuntu.com/cookbook/#id193>,其中指出:`respawn limit COUNT INTERVAL | 无限重生受到限制。如果在INTERVAL秒内重新生成该作业超过COUNT次,则认为该作业存在更深的问题,将被停止。 (2认同)

小智 9

永远添加到您的package.json,以便自动安装.然后在EB控制台的配置下,自定义节点命令:

node_modules/.bin/forever app.js
Run Code Online (Sandbox Code Playgroud)