【问题标题】:NodeJS Forever package minUptime and spinSleepTime warningsNodeJS Forever 包 minUptime 和 spinSleepTime 警告
【发布时间】:2014-09-15 06:24:53
【问题描述】:

我正在尝试运行 node.js 的永久功能,但收到以下警告;

C:\serv>forever start SERVER.js
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up f
or at least 1000ms
info:    Forever processing file: SERVER.js

如何设置--minUptime--spinSleepTime 来消除这些警告

使用npm install forever -g 安装forever

【问题讨论】:

  • 为什么需要更改它们?
  • 因为我得到了描述中的错误
  • 这不是错误,'warn' 表示这是一个您可以选择忽略的警告。
  • 但是当我查看永远列表时,这不会加载 js 文件,什么都不会出现
  • 那是另一个问题。您的脚本正在崩溃。如果它有错误,你不想延长它,你希望它崩溃。尝试使用node SERVER.js 运行并在永远启动它之前先修复错误。

标签: node.js forever


【解决方案1】:

这些只是警告。如果你愿意,你可以继续忽略它们。 但如果您想明确设置它们,forever --help 会告诉您如何设置。只需从 forever 开始:

forever start --minUptime 1000 --spinSleepTime 1000 SERVER.js

【讨论】:

  • 但它不加载我认为需要修复警告的文件。通过您的线路,我得到了 CreateProcessW:在放置 SERVER.js 的文件夹中时找不到文件
【解决方案2】:

文档不是很详尽,有点附加信息。

在以下示例中,我们将使用两个脚本:

fail-fast.js:

process.exit(1);

失败-slow.js:

setTimeout(() => { process.exit(1); }, 2000);

1) 使用默认值

forever fail-fast.js

fail-fast.js 脚本将只执行一次,然后不会进行其他启动尝试。

forever fail-slow.js

fail-slow.js 脚本将无限期重启,因为它会保持超过 1000 毫秒(如果未指定,则默认值为 minUptime)。您可以使用-m 参数限制重启次数。

2) 仅设置minUptime

forever --minUptime 10000 fail-fast.js
forever --minUptime 10000 fail-slow.js

fail-fast.jsfail-slow.js 都将永远不会重新启动,因为我们将 minUptime 延长到 10 秒,现在 fail-slow.js 被视为旋转。

3) 设置spinSleepTime

无论何时设置spinSleepTime(带或不带minUptime),您的进程将重新启动,即使它被视为“正在旋转”

forever --spinSleepTime 30000 fail-fast.js
forever --spinSleepTime 30000 fail-slow.js

两个脚本都将永远重启,在重启之间等待spinSleepTime毫秒。

【讨论】:

  • 您可能需要澄清第 (3) 点。它只会在失败时重新启动。显然你的两个脚本都失败了,但我认为区别并不明显。
  • @Cully 当您说它只会在失败时重新启动时,您的意思是当它不退出时它无论如何都不会重新启动?是否有可能即使使用 spinSleepTime,您的脚本在失败时也不会重新启动?是否存在可能发生这种情况的特定类型的故障?
【解决方案3】:

简而言之:

When stop
    if hadRunTime >= minUptime 
       restart 
    else if spinSleepTime != 0
         wait spinSleepTime
         restart
    else 
         stop and no restart

@Megadix 答案与spinSleepTime 有问题。 fail-fast.js 将重启 wating spinSleepTime,但fail-slow.js 将立即重启,无需等待!可以通过以下方式证明:

 console.log((new Date()).getTime());
 setTimeout(() => {
    process.exit(1);
   }, 2000);

输出如下:

1468812185697
error: Forever detected script exited with code: 1
error: Script restart attempt #1
1468812187766
error: Forever detected script exited with code: 1
error: Script restart attempt #2
1468812189834
error: Forever detected script exited with code: 1
error: Script restart attempt #3
1468812191901
error: Forever detected script exited with code: 1
error: Script restart attempt #4
1468812193977
error: Forever detected script exited with code: 1
error: Script restart attempt #5
1468812196039
error: Forever detected script exited with code: 1
error: Script restart attempt #6
1468812198107
error: Forever detected script exited with code: 1
error: Script restart attempt #7
1468812200172
error: Forever detected script exited with code: 1

【讨论】:

    【解决方案4】:
    forever start --minUptime 1234 --spinSleepTime 3421 SERVER.js
    

    https://github.com/nodejitsu/forever#usage

    【讨论】:

    • 它给了我forever --minUptime 1000 --spinSleepTime 1000 SERVER.js 但它不会加载它
    【解决方案5】:

    我假设你正在使用 express 模块,这是在你使用之后的方式 - 永远启动 SERVER.js - 你的服务器没有运行,因为 express 模块在路径 ./bin/www 中运行服务器 - 所以你应该使用这个命令- 永远启动 ./bin/www --name="SERVER" - name 是你的 js 文件的名字,默认是 app.js

    【讨论】:

    • 他们所指的错误只是警告。 @cyprian
    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 2014-05-25
    • 2013-03-16
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多