Node JS auto-Neustart alle für immer JS-Prozess, wenn der server ausfällt / abstürzt
Ich bin immer mit js zu halten meine Knoten server läuft 24/7 auf AWS EC2.
Ich verwenden Sie diesen Befehl,
forever start index.js
Ich jedoch bemerken, dass einige Zeit nach dem Zufallsprinzip Stoppt den Prozess und meine Website geht. Ich habe manuell ssh in meinen server, es wieder zu laufen by doing:
forever restartall
Und dann geht es backup. Gibt es eine Möglichkeit, von der ich definieren kann, ein Zeitlimit, sagen wir, wenn der server/die Webseite reagiert nicht, für 200, - in 5 sec, dann starten Sie alle immer automatisch?
Ich bin neu hier, wenn jemand kann mir Schritt für Schritt Beispiel für meinen Fall, wäre es genial.
- Wenn das ein *NIX-Maschine, dann könnte man einfach definieren Sie ein shell-Skript, das läuft auf einen cron-job, um überprüfen Sie den Zustand des Prozesses und neu starten, wenn nötig.
- Möglich, Duplikat der Automatisch starten forever (Knoten) auf system neu starten
- Seine auf AWS EC2-t2.micro linux ubuntu.. ich bin Total neu hier, können Sie bitte geben Sie das code-Beispiel, wie und wo Sie zu definieren, und führen Sie das shell-Skript aus? Danke, ich werde es markieren beste Antwort 🙂
- sicher ist, poste ich ein Beispiel heute. Sorry für die Verspätung
- Überprüfen Sie die bereits vorhandenen Antwort - stackoverflow.com/questions/13385029/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen NodeJS-server sollten nicht aufhören, ohne Grund. Die meisten der Zeit, es ist, weil ein 500-Fehler, der den server stoppen, dann werden Sie haben, um es neu zu starten.
forever
ist mitnode
standardmäßig auf den server starten.nodemon
ist ein npm-Paket starten Sie Ihren server neu, wenn die code-änderungen oder wenn der server Stoppt.Können Sie
forever
undnodemon
zusammen tun :oder
Ich werde vorschlagen, Verwenden Sie die PM2
Welche ist die beste option zum ausführen der server, Produktions-server
Was sind die Vorteile der Ihre Anwendung ausgeführt wird, auf diese Weise?
PM2 wird automatisch neu gestartet, wenn Ihr Programm abstürzt.
PM2 halten Sie ein Protokoll Ihrer unbehandelte Ausnahmen - in diesem Fall in einer Datei unter /home/safeuser/.pm2/logs/app-err.log.
Mit einem Befehl, PM2, kann gewährleisten, dass alle Anwendungen, die es schafft neu starten, wenn der server neu gestartet wird. Im Grunde, Sie Ihre Knoten-Anwendung wird als Dienst gestartet.
ref: https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps
Dies ist also ein Beispiel für die Verwendung
cron
zum ausführen von Skripts Dienst neu starten/führen Sie einen automatisierten task. Im Grunde, ich habe einige Skripte, die ich ausführen müssen, in bestimmten Zeitabständen auf meinem server. Für Ihren Fall, Sie möchten ein Skript erstellen, das automatisch überprüfen Sie den Zustand Ihres forever.js und wenn es gibt eine schlechte Reaktion, führen Sie dieforever restartall
Befehl, den du oben erwähnt.Können Sie dies einrichten, indem Sie anlegen einer neuen crontab-Eintrag auf dem server. Soweit geht das Skript, ich bin keinesfalls ein bash-script guru, habe ich ein einfaches Skript, das funktioniert für mich. Hier ist ein Beispiel der überprüfung eines service auf meinem Rechner Neustarten, wenn es nicht läuft.
Das video ist Teil einer genial node-deployment-Serie am Ende mit einem service auf einem UNIX-server... Vielleicht hilft es dir. Übrigens, es lohnt sich zu beobachten, alle vier videos...
Youtube-Link
Haben Sie jemals gedacht, pm2 als eine alternative. pm2 hat ein paar ziemlich nette features wie:
Können Sie die Steuerung neu gestartet wird auch durch das hinzufügen einer
--restart-delay <delay>
option.Hiermit eine vollständige Ausgabe der Hilfe von diesem tool.
Herausgefunden. Das problem war, da weniger RAM zur Verfügung hat in meiner EC2-Instanz. Ich habe ein Upgrade RAM auf 2 GB und habe nicht erlebt, den Absturz so weit.
Knoten können auch uncaught exception " - Fehler, aber mein größeres problem war, weil weniger Speicher.
Hoffe, das hilft anderen.
pm2 monit <yourapplication>
--max-memory-restart