node.js应用程序在AWS上停止的问题

时间:2017-07-06 22:53:33

标签: javascript node.js amazon-web-services amazon-ec2

我有一个ping.js应用程序ping一个网址,然后如果收到错误代码就向Slack发送一条消息。 它工作正常两天,但它只是停止工作。 我正在使用Screen来保持运行但它似乎仍然停止。 任何帮助将不胜感激。

代码如下:

simulate(event, ...args) {
    const handler = this.prop(propFromEvent(event));
    if (handler) {
      withSetStateAllowed(() => {
        // TODO(lmr): create/use synthetic events
        // TODO(lmr): emulate React's event propagation
        performBatchedUpdates(this, () => {
          handler(...args);
        });
        this.root.update();
      });
    }
    return this;
  }

您可以在下面找到解释其工作原理的帖子 http://codingyoda.com/slack-pinging-tool.php

2 个答案:

答案 0 :(得分:7)

我不知道为什么会发生这种情况,但您可以使用forever解决此问题,如果变为非活动状态或崩溃,它将重新启动该过程(这将取代屏幕)。

答案 1 :(得分:5)

日志肯定会帮助我们找到根本原因 - 请检查您的日志并在此处发布。正如其他答案所示 - 任何生产环境我建议使用foreverPM2重新启动应用程序,如果它已经死亡。正如@sebastian建议,如果不是原因,可能会解决问题 - 通过自动重启您的应用。另一个好处是,这些应用程序会将您的控制台消息记录到文件中 - 这将使您(和我们)更好地了解正在发生的事情。

还有一个想法:你可能正在处理未被捕获的异常。如果您认为这种情况正在发生,您可以添加一些代码来捕获,报告甚至优雅地关闭。 George Ornbo写了一篇关于这个here的精彩文章,我建议你在考虑如何处理这些例外时阅读。

这是一个过于简化的代码示例,用于捕获应捕获错误的未捕获异常,更重要的是,您需要跟踪问题源自的堆栈跟踪(假设您捕获这些日志):

//catches uncaught exceptions
process.on('uncaughtException', function (err) {
    console.trace("Uncaught Exception", err);
    gracefulShutdown(err);
});

// implementation beyond the scope of this question. 
function gracefulShutdown(error) {
    process.exit(error);
} 

我希望有所帮助!