2011-04-14 48 views
8

Dado que el nodo es básicamente un proceso único, cuando algo va terriblemente mal, la aplicación completa muere.Cuando node.js se cae, ¿cómo puedo restaurarlo automáticamente?

Ahora tengo un par de aplicaciones desarrolladas en Express y estoy usando algunos métodos manuales para evitar tiempos de inactividad prolongados (process.on ('uncaughtException') y un monitor de latidos personalizado).

¿Alguna sugerencia de la comunidad? ¿Mejores prácticas? Marcos?

Gracias! Un

Respuesta

5

usar algo como forever

o utilizar supervisor.

Solo npm link y luego sudo supervisor server.js.

Estos tipos de bibliotecas también admiten la recarga en caliente. Hay algunos que utiliza desde la línea de comandos y ejecutan servicios de nodo como subprocesos para usted. Hay otros que esperan que escribas tu código para recargarse.

Idealmente, lo que desea es avanzar hacia un equilibrador de carga completo que no sea seguro. Si un proceso de nodo único en su equilibrador de carga se bloquea, quiere que se reinicie silenciosamente y que se rescaten todas las conexiones y datos.

Personalmente, recomendaría supervisor para desarrollo (está escrito por isaacs!) Y un balanceador de carga completo (ya sea nginx o nodo) para su servidor de producción real.

Por supuesto sus múltiples procesos de servidor de nodo ya se ejecutan en paralelo, ya que se preocupan acerca de la expansión a través de múltiples núcleos adecuados;)

3

Use forever.

"Una herramienta CLI simple para asegurar que un script se ejecuta continuamente dada (es decir, para siempre)"

sólo lo instale con NPM

npm install forever 

y escriba

forever start app.js 
1

voy Recomiendo encarecidamente forever también.Lo utilicé ayer y es una brisa:

  1. Instalar npm install forever

  2. Comience su aplicación forever start myapp.js

  3. Compruebe si su trabajo forever list

tratar matar su aplicación:

  1. ps

  2. Obtenga su pid myapp.js y ejecutar kill <pid

  3. plazo forever list y verá que se está ejecutando de nuevo

0

puede intentar utilizar la fuga, una biblioteca para node.js similar a Spark o Unicornio:

https://github.com/pgte/fugue

Fugue puede gestionar cualquier tipo de servidor node.js, no solo servidores web, y está configurado y configurado como un script node.js, no como un comando CLI, por lo que las cadenas de herramientas de despliegue & node.js normales pueden usarlo.

2

Si está utilizando Ubuntu puede usar advenedizo (que está instalado por defecto).

$ cat /etc/init/my_app.conf

descripción "my_app" autor "me"

comienzo en (local-sistemas de ficheros y IFACE neta de dispositivo arriba = eth0) Parada en apagado

de reaparición

exec sh -c "env NODE_ENV = /path/myapp/app.js nodo de producción >> /var/log/node.log 2> & 1"

"respawn" significa que la aplicación se reiniciará si se muere.

Para iniciar la aplicación

my_app inicio

Para otros comandos

hombre initctl

Cuestiones relacionadas