了解node.js pm2启动选项

muf*_*fel 5 node.js pm2

pm2具有以下命令行选项:

  startOrRestart <json>
  startOrReload <json>
  startOrGracefulReload <json>
Run Code Online (Sandbox Code Playgroud)

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

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

我假设重新启动会强制应用程序停止并随后重新启动,并且重新加载将停止接受新连接,等待处理所有连接,然后重新启动应用程序。不同之处在于,重新加载没有停机或中止连接,但除此之外,它的行为就像重新启动一样(即应用代码更改)。

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

Gep*_*ser 8

如果应用程序尚未运行,这三个命令将启动您的应用程序,因此,让我们重点关注应用程序已经运行的情况下会发生什么。

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

startOrReload :正如您可以在此处阅读:

与重新启动(终止并重新启动进程)相反,重新加载实现了 0 秒停机重新加载。

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

startOrGracefulReload:同样,您可以在此处阅读更多内容:

有时,您可能会经历很长的重新加载时间,或者重新加载不起作用(回退到重新启动),这意味着您的应用程序在退出时仍然具有打开的连接。或者您可能需要关闭所有数据库连接、清除数据队列或其他什么。

要解决此问题,您必须使用优雅的重新加载。

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