如果进程无法在 pm2 中启动,如何放弃?

How to give up if a process won't start in pm2?

在 Windows,pm2 在 8 个进程上启动我的应用程序。

我的应用没有启动(由于端口冲突)。

所以 pm2 一次又一次地重试,在 linux 上很好,但是 Windows 是一个痛苦,因为所有终端 Windows 都会生成并关闭并重新生成.

如果 20 秒后无法启动应用程序,如何让 pm2 放弃?或者更好的是,如果它在前 10 秒内跌倒,我该如何告诉它不要重试?

经过大量搜索,我在这里找到了文档:

http://pm2.keymetrics.io/docs/usage/application-declaration/#control-flow

这详细说明了标志,例如:

min_uptime - 被视为已启动的应用程序的最短正常运行时间

max_restarts - 在您的应用被视为错误并停止重启之前连续不稳定重启的次数(小于 1 秒间隔或通过 min_uptime 自定义时间)

restart_delay - 重新启动崩溃的应用程序之前等待的时间(以毫秒为单位)。默认为 0。

我的配置 yaml 文件 (forever.yaml) 现在看起来像这样:

# pm2 stop|start|restart|reload|delete pm2.yaml # stop|start|restart|reload|delete all
# example - pm2 start forever.yaml
#           pm2 stop forever.yaml --only mock-be
# reload is a no downtime restart

apps:

  - name: mock-be
    script: ./mbe/mockBEServer.js
    instances: 2
    exec_mode: cluster
    watch: true
    # see http://pm2.keymetrics.io/docs/usage/application-declaration/#control-flow
    max_restarts: 5 # number of consecutive unstable restarts
    min_uptime: 5000 # min uptime of the app to be considered started
    restart_delay: 1000 # time to wait before restarting a crashed app

  - name: node-mt
    script: ./nmt/nodeMTServer.js
    instances: 2
    exec_mode: cluster
    watch: true
    max_restarts: 5
    min_uptime: 5000
    restart_delay: 1000

从..开始

pm2 start forever.yaml

此配置将尝试连续 5 次不稳定重启,然后再将进程置于 errored 状态。当处于错误状态时,进程将不再尝试重新启动。如果正常运行时间少于 5 秒,则认为重新启动不稳定(例如,如果发生端口冲突,则可能会发生这种情况)。