了解 node.js pm2 启动选项
understand node.js pm2 startup options
pm2 有以下命令行选项:
startOrRestart <json>
startOrReload <json>
startOrGracefulReload <json>
但是它们之间有什么区别呢?
据我所知,如果应用程序尚未启动,请启动它们。所以让我们考虑应用程序(一个 HTTP 服务器)目前是 运行.
我假设 restart 强制应用程序停止并在之后重新启动它,并且 reload 将停止接受新连接,等待所有连接处理,然后重新启动应用程序。不同之处在于没有停机时间或重新加载的中止连接,但除此之外它的行为就像 restart (即应用代码更改)。
我的假设正确吗? startOrGracefulReload 有何不同?
如果应用程序尚未 运行,这三个命令将启动您的应用程序,因此,让我们集中精力在应用程序已经 运行 的情况下会发生什么。
startOrRestart:它将停止 JSON 文件中的所有应用程序,然后所有应用程序将再次启动。您将有停机时间。
startOrReload: 如你所见here:
As opposed to restart, which kills and restarts the process, reload
achieves a 0-second-downtime reload.
因此,主要区别在于您没有停机时间。
startOrGracefulReload:同样,您可以阅读更多here:
Sometimes you can experience a very long reload, or a reload that
doesn't work (fallback to restart) meaning that your app still has
open connections on exit. Or you may need to close all databases
connections, clear a data queue or whatever.
To work around this problem you have to use the graceful reload.
因此,基本上 pm2
要求您的应用程序在重新加载之前退出,以防万一您有数据库连接或待处理请求等依赖项。您必须指定您的应用程序关闭所有现有连接所需的时间。然后,一个新进程将启动,当这个新进程说“嘿!我还活着!”时,您的旧进程将结束。
pm2 有以下命令行选项:
startOrRestart <json>
startOrReload <json>
startOrGracefulReload <json>
但是它们之间有什么区别呢?
据我所知,如果应用程序尚未启动,请启动它们。所以让我们考虑应用程序(一个 HTTP 服务器)目前是 运行.
我假设 restart 强制应用程序停止并在之后重新启动它,并且 reload 将停止接受新连接,等待所有连接处理,然后重新启动应用程序。不同之处在于没有停机时间或重新加载的中止连接,但除此之外它的行为就像 restart (即应用代码更改)。
我的假设正确吗? startOrGracefulReload 有何不同?
如果应用程序尚未 运行,这三个命令将启动您的应用程序,因此,让我们集中精力在应用程序已经 运行 的情况下会发生什么。
startOrRestart:它将停止 JSON 文件中的所有应用程序,然后所有应用程序将再次启动。您将有停机时间。
startOrReload: 如你所见here:
As opposed to restart, which kills and restarts the process, reload achieves a 0-second-downtime reload.
因此,主要区别在于您没有停机时间。
startOrGracefulReload:同样,您可以阅读更多here:
Sometimes you can experience a very long reload, or a reload that doesn't work (fallback to restart) meaning that your app still has open connections on exit. Or you may need to close all databases connections, clear a data queue or whatever.
To work around this problem you have to use the graceful reload.
因此,基本上 pm2
要求您的应用程序在重新加载之前退出,以防万一您有数据库连接或待处理请求等依赖项。您必须指定您的应用程序关闭所有现有连接所需的时间。然后,一个新进程将启动,当这个新进程说“嘿!我还活着!”时,您的旧进程将结束。