node.js - restart forever node
Advertencias de tiempo de ejecución de NodeJS Forever y spinSleepTime (5)
Estoy intentando ejecutar la función forever para node.js pero obtengo advertencias por debajo;
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
Cómo configurar --minUptime
y --spinSleepTime
para eliminar estas advertencias
Paquete instalado forever
con npm install forever -g
En breve:
When stop
if hadRunTime >= minUptime
restart
else if spinSleepTime != 0
wait spinSleepTime
restart
else
stop and no restart
@Megadix La respuesta tiene algo de malo con spinSleepTime
. fail-fast.js
reiniciará spinSleepTime
, pero fail-slow.js
se reiniciará inmediatamente, ¡no hay que esperar! Puede ser probado por:
console.log((new Date()).getTime());
setTimeout(() => {
process.exit(1);
}, 2000);
salida como:
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
Estas son sólo advertencias. Podrías seguir ignorándolos, si quieres. Pero si desea establecerlos de forma explícita, forever --help
le indica cómo hacerlo. Simplemente comienza forever
con:
forever start --minUptime 1000 --spinSleepTime 1000 SERVER.js
La documentación no es muy exhaustiva, un poco de información adicional.
En los siguientes ejemplos usaremos dos scripts:
fail-fast.js:
process.exit(1);
fail-slow.js:
setTimeout(() => { process.exit(1); }, 2000);
1) utilizando valores por defecto
forever fail-fast.js
fail-fast.js
script fail-fast.js
se ejecutará solo una vez , luego no se realizarán otros intentos de inicio.
forever fail-slow.js
fail-slow.js
script fail-slow.js
se reiniciará indefinidamente , ya que permanece más de 1000 ms (el valor predeterminado de minUptime
si no se especifica). Puede limitar el número de reinicios con el parámetro -m
.
2) configurando solo minUptime
forever --minUptime 10000 fail-fast.js
forever --minUptime 10000 fail-slow.js
fail-fast.js
y fail-slow.js
nunca se reiniciarán , ya que minUptime
a 10 segundos y ahora fail-slow.js
se considera un giro.
3) estableciendo spinSleepTime
Cada vez que establezca spinSleepTime
(con o sin minUptime
), su proceso se reiniciará incluso si se considera ''giratorio'' .
forever --spinSleepTime 30000 fail-fast.js
forever --spinSleepTime 30000 fail-slow.js
Ambos scripts se reiniciarán para siempre , esperando spinSleepTime
milisegundos entre los reinicios.
Supongo que está utilizando el módulo Express que es la forma después de que usted use - siempre inicie SERVER.js - su servidor no se está ejecutando, porque el módulo Express ejecuta el servidor en la ruta ./bin/www - por lo que debe usar este comando - siempre inicie ./bin/www --name = "SERVER" - nombre es el nombre de su archivo js, de forma predeterminada app.js
forever start --minUptime 1234 --spinSleepTime 3421 SERVER.js