Предупреждения 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
Ответ 4
forever start --minUptime 1234 --spinSleepTime 3421 SERVER.js
https://github.com/nodejitsu/forever#usage
Ответ 5
Я предполагаю, что вы используете экспресс-модуль, который после использования - навсегда запускайте SERVER.js - ваш сервер не запущен, потому что экспресс-модуль запускает сервер в пути. /bin/www - поэтому вы должны использовать эту команду - forever start./bin/www - name= "SERVER" - имя - это имя вашего js файла, по умолчанию app.js