【问题标题】:nodejs - how to ensure my application is reliable all the timenodejs - 如何确保我的应用程序始终可靠
【发布时间】:2017-09-30 20:27:09
【问题描述】:

我一直在为我的服务器使用 forverjs,但由于某种原因服务器停止了并且服务器没有再次重新启动。 foreverjs可靠吗?

我应该使用任何其他库吗?

发现有很多库,如 pm2、nodemon、upstart、systemd、nginx。哪一个应该确保我的应用程序一直运行。这些工具还可以处理大量请求吗?

【问题讨论】:

  • 我喜欢 pm2,但我也建议 monit 进行监控(停止服务的电子邮件,但我将节点进程重新启动到 pm2,monit 也适用于所有“非节点”)。除此之外,我发现这一切都是为了让你的代码记录正确的错误,这样你就可以防止同样的事情重复发生。在不知道错误的情况下,您可以坐在那里挠头。 “我当然希望这不会再次发生!”。

标签: node.js nginx npm pm2 forever


【解决方案1】:

nodemon 是一个不错的选择,你可以结合使用 forever 和 nodemon using,

forever start -c nodemon app.js

另外以我的经验永远是很靠谱的,试试看

forever logs app.js

看看究竟是什么导致了错误

【讨论】:

    【解决方案2】:

    您的问题中有多个问题需要分析。

    foreverjs可靠吗?

    forever 是一个非常受欢迎的软件包。 As seen on GitHub,它有 75 个贡献者和 636 个提交。这个问题主要是基于意见的,但是 9/10(可能是 10/10)有经验的开发人员会说它是可靠的出于它的目的(我在下面展开)。

    我应该使用任何其他库吗?

    可靠性是通过坚固的软件设计实现的,而不仅仅是您选择的软件包。我多年来一直使用foreverpm2 生产流程,没有任何问题。它们包括强大的可靠性功能,例如在应用程序崩溃时尝试重新启动。包不应该修复代码中的终端错误。

    发现有很多库,如 pm2、nodemon、upstart、systemd、nginx。 哪一个可以确保我的应用程序一直运行。

    这可以通过阅读他们的 GitHub 描述找到。我使用nodemon 来快速测试编写的代码。例如,我启动了nodemon 进程,它开始了我的Node.js 进程。当我编辑我的代码并按保存时,Node.js 进程会自动停止并使用新代码重新启动。 nodemon 不应单独用于长时间运行的生产服务器,因为它会在您退出 shell 时停止。 pm2forever 是有效的库,如有必要,您可以调查 upstartsystemdnginx

    关于@Kalana Demel 的回答,我在上面的解释中考虑使用forever 运行nodemon 作为使用forever

    如何确保我的应用程序始终可靠

    对于您的问题的总体答案,您应该编写测试以确保您的代码是可靠的。如果您编写了有效的单元和集成测试,那么选择一个包来运行该过程将是微不足道的(并且与可靠性无关),因为您不应该期望它崩溃。

    【讨论】:

      【解决方案3】:

      pm2 在这些情况下是不错的选择,我个人在所有 node.js 服务器中都使用 pm2,与其他相比,它提供了许多更重要的功能。
      它的最大优点之一是可以轻松地与 keymetrics/newrelic 集成以分析服务器。
      pm2 也会给你 cpu/memory 使用率,你甚至可以配置重启限制和间隔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 2020-07-10
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        相关资源
        最近更新 更多