Da Knoten im Grunde ein einzelner Prozess ist, wenn etwas schrecklich schief geht, stirbt die gesamte Anwendung.
Ich habe jetzt ein paar Apps, die auf express basieren, und ich benutze einige manuelle Methoden, um längere Ausfallzeiten zu verhindern (process.on ('uncaughtException') und einen benutzerdefinierten Heartbeat-Monitor).
Irgendwelche Vorschläge von der Gemeinde? Best-Practices? Frameworks?
Danke! A
Verwenden Sie so etwas wie forever
oder verwenden Sie supervisor
.
Nur npm link
und dann sudo supervisor server.js
.
Diese Arten von Bibliotheken unterstützen auch das Warmladen. Es gibt einige, die Sie über die Befehlszeile verwenden, und sie führen Knoten-Services als Unterprozesse für Sie aus. Es gibt andere, die erwarten, dass Sie Ihren Code schreiben, um sich neu zu laden.
Idealerweise möchten Sie auf einen vollwertigen Lastenausgleich ausweichen, der ausfallsicher ist. Wenn ein einzelner Knoten in Ihrem Load Balancer abstürzt, sollten Sie ihn ruhig neu starten und alle Verbindungen und Daten wiederherstellen.
Persönlich würde ich supervisor
für die Entwicklung empfehlen (Es wurde von isaacs geschrieben!) und einen vollständigen Lastenausgleich (entweder nginx oder node) für Ihren echten Produktionsserver.
Natürlich führen Sie bereits mehrere Server mit mehreren Knoten gleichzeitig aus, weil Sie sich für die Skalierung über mehrere Kerne interessieren;)
Wenn Sie Ubuntu verwenden, können Sie den Upstart verwenden (der standardmäßig installiert ist).
$ cat /etc/init/my_app.conf
Beschreibung "my_app" Autor "mich"
start on (local-filesystems und net-device-up IFACE = eth0) stop on Herunterfahren
Respawn
exec sh -c "env NODE_ENV = Produktionsknoten /path/myapp/app.js & gt; /var/log/node.log 2 & gt; & amp; 1"
"Respawn" bedeutet, dass die App neu gestartet wird, wenn sie stirbt.
Um die App zu starten
starte my_app
Für andere Befehle
man initctl
Ich werde auch forever
dringend empfehlen. Ich habe es gestern benutzt und es ist ein Kinderspiel:
Installieren Sie npm install forever
Starten Sie Ihre App forever start myapp.js
Prüfe, ob es funktioniert forever list
Versuchen Sie, Ihre App zu löschen:
ps
Holen Sie sich Ihre myapp.js-PID und führen Sie kill <pid
Führe forever list
aus und du wirst sehen, dass es wieder läuft
Sie können versuchen, Fugue zu verwenden, eine Bibliothek für node.js, die Spark oder Unicorn ähnelt:
Fugue kann alle Server vom Typ node.js verwalten, nicht nur Webserver, und es ist als node.js-Skript und nicht als CLI-Befehl eingerichtet und konfiguriert, also normales node.js build & amp; Bereitstellung Toolchains können es verwenden.
Tags und Links node.js