Предупреждения NodeJS Forever minUptime и spinSleepTime

Я пытаюсь запустить вечную функцию для 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 для удаления этих предупреждений

Установленный пакет forever с npm install forever -g

Ответы

Ответ 1

Это только предупреждения. Если хотите, вы можете игнорировать их. Но если вы хотите явно установить их, forever --help сообщит вам, как это сделать. Просто запустите forever с помощью:

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

Ответ 2

Документация не очень исчерпывающая, немного дополнительной информации.

В следующих примерах мы будем использовать два сценария:

отказоустойчивость fast.js:

    process.exit(1);

отказоустойчивость slow.js:

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

1), используя значения по умолчанию

    forever fail-fast.js

fail-fast.js script выполнит только один раз, тогда никакие другие попытки запуска не будут выполнены.

    forever fail-slow.js

fail-slow.js script будет перезапущен неограниченно, так как он остается более 1000 мс (значение по умолчанию minUptime если не указано). Вы можете ограничить количество перезапусков параметром -m.

2) только minUptime

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

Оба fail-fast.js и fail-slow.js будут никогда не перезапускаться, потому что мы расширили minUptime до 10 секунд, и теперь fail-slow.js считается вращающимся.

3) установка spinSleepTime

Всякий раз, когда вы устанавливаете spinSleepTime (без нашего minUptime), , ваш процесс перезапустится, даже если он считается "вращением" .

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

Оба сценария будут перезапущены навсегда, wating 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

Ответ 5

Я предполагаю, что вы используете экспресс-модуль, который после использования - навсегда запускайте SERVER.js - ваш сервер не запущен, потому что экспресс-модуль запускает сервер в пути. /bin/www - поэтому вы должны использовать эту команду - forever start./bin/www - name= "SERVER" - имя - это имя вашего js файла, по умолчанию app.js