2013-05-14 20 views
16

Wir beenden die Entwicklung eines Projekts, der Client verwendet es bereits, aber gelegentlich treten einige Fehler auf - Absturz des Servers.Wie wird ein Knotenserver automatisch neu gestartet?

Ich weiß, ich könnte einen Dienst als "Upstart" -Skript auf Linux registrieren, um meinen Node-Dienst neu starten zu lassen, wenn es abstürzt.

Aber unser Server läuft andere Sachen, so dass wir es nicht neu starten können. Nun, eigentlich beim Schreiben, ich weiß, ich habe zwei Fragen dann:

  • Will ‚Emporkömmling‘ Arbeit ohne Neustart? Etwas flüstert ja nur zu mir :)
  • Wenn nicht, welche andere Option würde ich meinen Node-Server "Respawn", wenn es abstürzt?

Antwort

25

Ja, Upstart wird Ihren Prozess ohne Neustart neu starten.

Auch sollten Sie in forever suchen.

+3

Der Global Error Handler wird von joyents Anleitung zur Fehlerbehandlung entmutigt: https://www.joyent.com/developers/node/design/errors. Falls ein unbekannter Fehler eine Ausnahme verursacht hat, ist es besser, die App zum Absturz zu bringen (und neu zu starten), als sie in einem schlechten Zustand zu belassen, was zu schwer zu debuggenden Fehlern führen wird. – syonip

+0

Wahr. Das war mir nicht bewusst, als ich diese Antwort gepostet habe. Danke, dass du es aufgezeigt hast. Ich werde das entfernen. – Daniel

-2

können Sie auch nodemon verwenden.

npm install -g nodemon 

nodemon werden die Dateien in dem Verzeichnis sehen, die gestartet wurde nodemon, und wenn sie sich ändern, wird es automatisch Ihre Knoten-Anwendung neu starten.


bearbeiten

sudo nodemon server.js 
+11

AFAIK nodemon dient zum Anzeigen von Änderungen in Quelldateien. Großartig für Entwickler, aber nicht so sehr für Live-Bereitstellungen. Um die Website zu zitieren: "Nodemon ist ein Dienstprogramm, das auf Änderungen in Ihrer Quelle überwachen und Ihren Server automatisch neu starten wird." – Boon

+0

natürlich das für dev umgebung, in der produktion warum müssen sie den server automatisch neustarten? –

+1

nodemon wird im Absturz nicht neu gestartet. Es wird nur neu gestartet, wenn Sie einige Dateien ändern. andere weise nicht – Toumi

6

PM2 ist ein Produktionsprozessmanager für Node.js App.

1

Wenn Ihr Fokus für den automatischen Neustart immer eine Anwendung ist, empfehle ich, einen Prozessmanager zu verwenden. Der Prozessmanager behandelt im Allgemeinen den Knotenprozess (wenn Cluster aktiviert ist) und ist für die Ausführung des Prozesses verantwortlich. PM lehnt sich an das operative System an: Ihre Knoten-App und das Betriebssystem sind nicht so stark verkettet, weil die PM in der Mitte ist.

Endgültiger Trick: Setzen Sie den Prozessmanager auf Neustart.

Here ist eine vollständige Leistungsverbesserung zu folgen.

Verwandte Themen