【问题标题】:How does Node.JS in App Engine Standard handle crashes?App Engine Standard 中的 Node.JS 如何处理崩溃?
【发布时间】:2018-07-11 06:57:22
【问题描述】:

当节点中的某个函数崩溃时,它往往会导致整个应用程序崩溃。这可以通过pm2 等解决方案和/或为未捕获的异常设置全局侦听器来缓解。

这在 AppEngine 标准 NodeJS 中是如何处理的?如果发生未捕获的异常 - 它们是否会自动恢复(并记录) - 允许其他功能仍然能够运行,还是必须进行一些手动工作来处理这种情况?

【问题讨论】:

    标签: javascript google-app-engine


    【解决方案1】:

    如果您的 Node.js 应用程序崩溃,AppEngine 将在其日志机制中记录其错误并重新启动。如果它一直崩溃,它会将应用程序标记为不健康:

    Google App Engine Node.js Application Unhealthy

    如果您不想依赖 AppEngine,您可以随时将此代码 sn-p 添加到您的所有 Node.js 应用程序中:

    const someFn = // do something to handle exceptions
    process.on("unhandledRejection", someFn );
    

    虽然我不建议这样做。

    就我个人而言,我更喜欢将我的机器放在 Google Cloud 中(没有 AppEngine),并为我准备一个服务器,在那里我可以拥有 PM2 并可以按照自己的意愿对其进行调整,但如果您投资了 AppEngine,这是你能做的最好的。

    您需要记住的另一件事是,即使 GAE 记录错误,您确实有日志限制,所以如果您的应用程序一直在崩溃,您最终会遇到它。

    另外,在你的代码中使用 Monads(咳咳 Sanctuary / Folktale)也有帮助:P

    【讨论】:

    • 谢谢@Flame_Phoenix ...很高兴在这里见到你 :D - 你链接到的文章是关于 AppEngine Flexible 它没有任何包装器并且几乎就像一个计算实例......我相信标准在这方面可能会有所不同
    • 虽然我无法找到任何专门解决 Node 问题的文档,但我对这种行为相当肯定。不过,如果您使用的是 GAE,您可以创建的支持请求数量有限,您可以使用它们将此问题发送给 GAE 支持团队。
    • 似乎青铜级不提供任何支持请求:\
    • 你在试用吗?如果是,您有权获得支持票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多