2013-05-14 21 views
16

Stiamo terminando lo sviluppo di un progetto, il client lo sta già utilizzando ma occasionalmente si verificano alcuni errori: il server si blocca.come riavviare automaticamente un server nodo?

So che potrei registrare un servizio come script 'upstart' su linux, in modo da riavviare il mio servizio di nodo quando si blocca.

Ma il nostro server sta eseguendo altre cose, quindi non possiamo riavviarlo. Beh, in realtà, durante la scrittura, mi accorgo di avere due domande allora:

  • funzionerà 'parvenu' senza dover riavviare? Qualcosa mi sta semplicemente sussurrando :)
  • In caso contrario, quale altra opzione dovrei 'respawn' il mio server nodo quando si blocca?

risposta

25

Sì, upstart riavvierà il processo senza un riavvio.

Inoltre, è necessario esaminare forever.

+3

Il gestore degli errori globali è scoraggiato dalla guida di Joyer alla gestione degli errori: https://www.joyent.com/developers/node/design/errors. Nel caso in cui qualche errore sconosciuto causasse un'eccezione, è meglio arrestare l'app (e riavviarla) piuttosto che lasciarla in uno stato negativo che porterà a più bug difficili da debugare. – syonip

+0

Vero. Non ero a conoscenza di ciò quando ho postato questa risposta. Grazie per segnalarlo. Lo rimuoverò. – Daniel

-2

è inoltre possibile utilizzare nodemon.

npm install -g nodemon 

nodemon guarderanno i file nella directory che nodemon è stato avviato, e se cambiano, si riavvia automaticamente l'applicazione nodo.


Modifica

sudo nodemon server.js 
+11

AFAIK nodemon consente la visualizzazione di modifiche nei file di origine. Ottimo per dev ma non tanto per le implementazioni live. Per citare il sito Web: "Nodemon è un'utilità che monitorerà eventuali modifiche all'origine e riavvierà automaticamente il server." – Boon

+0

fuori rotta per ambiente di sviluppo, in produzione perché è necessario riavviare automaticamente il server? –

+1

nodemon non si riavvia in caso di arresto anomalo. si riavvia solo se si modificano alcuni file. altro non è il – Toumi

6

PM2 è una produzione process manager per Node.js app.

1

Se la messa a fuoco per il riavvio automatico è un'applicazione sempre in esecuzione, suggerisco di utilizzare un gestore processi. Il gestore processi, in generale, gestisce il processo del nodo (se abilitato per il cluster) ed è responsabile dell'esecuzione del processo/es. PM si appoggia al sistema operativo: la tua app di nodo e il sistema operativo non sono così incatenati perché il pm è nel mezzo.

Il trucco finale: mette il gestore processi su upstart.

Here è un percorso completo di miglioramento delle prestazioni da seguire.

Problemi correlati