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

时间:2017-05-03 06:33:11

标签: node.js nginx npm pm2 forever

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

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

发现有许多libs,如pm2,nodemon,upstart,systemd,nginx。哪一个应该确保我的应用程序一直在运行。这些工具也能处理大量的请求吗?

3 个答案:

答案 0 :(得分:2)

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

  

永远可靠吗?

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

  

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

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

  

发现有许多libs,如pm2,nodemon,upstart,systemd,nginx。   哪一个应该确保我的应用程序一直在运行。

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

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

  

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

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

答案 1 :(得分:0)

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

forever start -c nodemon app.js

另外根据我的经验,永远是非常可靠的,试试

forever logs app.js

查看确切导致错误的原因

答案 2 :(得分:0)

在这些情况下,

pm2 是不错的选择,我个人在所有node.js服务器中使用pm2,与其他服务器相比,它提供了许多更重要的功能。
关于它的最好的事情之一可以很容易地与keymetrics / newrelic集成,用于服务器的分析 此外,pm2将为您提供CPU /内存使用,您甚至可以配置重启限制和间隔。