了解 Node.js PM2 启动选项

5

pm2 具有以下命令行选项:

  startOrRestart <json>
  startOrReload <json>
  startOrGracefulReload <json>

但它们之间有什么区别呢?

据我所知,如果应用程序尚未启动,则所有应用程序都会启动应用程序。因此,让我们考虑应用程序(HTTP服务器)当前正在运行。

我假设重启会强制停止应用程序,然后重新启动它,而重新加载会停止接受新连接,等待处理所有连接,然后重新启动应用程序。不同之处在于重新加载没有停机时间或中止的连接,但除此之外,它的行为与重启相同(即应用代码更改已应用)。

我的假设正确吗? startOrGracefulReload 有何不同?

1个回答

8

如果您的应用程序尚未运行,则这三个命令将启动它,因此让我们集中精力研究它已经在运行时会发生什么。

startOrRestart:它将停止JSON文件中的所有应用程序,然后再次启动它们。您将有停机时间。

startOrReload:正如您可以在这里阅读到的那样:

与重启不同,它杀死并重新启动进程,reload实现了0秒停机重载。

因此,主要区别在于您将没有停机时间。

startOrGracefulReload:同样,您可以在这里了解更多信息:

有时候你可能会遇到一个非常长的重新加载时间,或者重新加载不起作用(回退到重启),这意味着你的应用程序在退出时仍然保持着打开的连接。或者你可能需要关闭所有数据库连接、清除数据队列或其他操作。

为了解决这个问题,你需要使用优雅的重新加载方式。

所以,基本上 pm2 会要求你的应用程序在重新加载之前退出,以防你有像数据库连接或挂起请求这样的依赖关系。你需要指定应用程序需要关闭所有现有连接所需的时间。然后,一个新的进程将启动,当这个新的进程说“嘿!我还活着!”时,你的旧进程将结束。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接