Node JS automatisch alle JS-Prozesse für immer neu starten, wenn der Server ausfällt / abstürzt

7

Ich benutze immer js, um meinen Node-Server rund um die Uhr auf AWS EC2 laufen zu lassen.

Ich benutze diesen Befehl

%Vor%

Allerdings merke ich, dass es irgendwann den Prozess zufällig stoppt und meine Seite ausfällt. Ich muss manuell auf meinen Server zugreifen, um ihn erneut auszuführen, indem ich Folgendes tue:

%Vor%

Und dann geht es backup. Gibt es eine Möglichkeit, wie ich ein Timeout definieren kann, sagen wir, wenn der Server / Website nicht in 5 Sekunden für 200 reagiert, dann starten Sie alle für immer automatisch neu zu starten?

Ich bin neu dazu, wenn jemand mir Schritt für Schritt ein Beispiel für meinen Fall geben kann, wäre es genial.

    
Faizan 12.05.2016, 20:45
quelle

6 Antworten

0

Ich habe es herausgefunden. Das Problem lag an weniger RAM in meiner EC2-Instanz. Ich habe RAM auf 2 GB aufgerüstet und habe den Absturz bisher nicht erlebt.

Knoten kann auch nicht abgefangene Ausnahmefehler machen, aber mein Hauptproblem war weniger Speicher.

Hoffe, das hilft anderen.

    
Faizan 06.06.2016, 16:20
quelle
11

Ein NodeJS-Server sollte nicht ohne Grund anhalten. Die meiste Zeit ist es wegen eines 500 Fehler, der den Server stoppt, dann müssen Sie es neu starten. forever verwendet standardmäßig node , um den Server zu starten.

nodemon ist ein npm-Paket, das den Server neu startet, wenn sich der Code ändert oder wenn der Server beendet wird.

Sie können forever und nodemon zusammen verwenden, indem Sie Folgendes tun:

%Vor%

oder

%Vor%     
boehm_s 05.06.2016 19:32
quelle
4

Ich schlage vor, die PM2

zu verwenden

Welches ist die beste Option, um den Server-Produktionsserver auszuführen

Was sind die Vorteile, wenn Sie Ihre Anwendung auf diese Weise ausführen?

  • Einfach einzurichten und auszuführen.
  • PM2 wird Ihre Anwendung automatisch neu starten, wenn sie abstürzt.

  • PM2 protokolliert Ihre nicht behandelten Ausnahmen - in diesem Fall in einer Datei unter /home/safeuser/.pm2/logs/app-err.log.

  • Mit einem einzigen Befehl kann PM2 sicherstellen, dass alle von ihm verwalteten Anwendungen beim Neustart des Servers neu gestartet werden. Grundsätzlich wird Ihre Knotenanwendung als Dienst gestartet.

ref: Ссылка

    
Vishnu Mishra 08.06.2016 11:22
quelle
2

Dies ist ein Beispiel für die Verwendung von cron zum Ausführen von Skripts, die den Dienst neu starten / einige automatisierte Aufgaben ausführen können. Im Grunde habe ich einige Skripte erstellt, die ich in bestimmten Zeitintervallen auf meinem Server ausführen muss. In Ihrem Fall möchten Sie ein Skript erstellen, das automatisch den Status Ihrer Datei "forever.js" überprüft. Wenn es eine falsche Antwort zurückgibt, führen Sie den oben genannten Befehl forever restartall aus.

Sie können dies einrichten durch Erstellen eines neuen Crontab-Eintrags auf dem Server. Soweit das Skript geht, bin ich keineswegs ein Bash-Script-Guru; Ich habe ein einfaches Skript erstellt, das für mich funktioniert. Hier ist ein Beispiel für die Überprüfung eines Dienstes auf meinem Computer, den ich neu starte, wenn er nicht ausgeführt wird.

%Vor%     
Evan Bechtol 16.05.2016 11:49
quelle
2

Dieses Video ist Teil einer großartigen Node-Deployment-Serie, die mit der Nutzung eines Dienstes auf einem UNIX-Server endet ... Vielleicht hilft es Ihnen. Übrigens, es lohnt sich, alle vier Videos anzuschauen ... Youtube-Link

    
Argee 05.06.2016 06:28
quelle
1

Haben Sie jemals pm2 als Alternative betrachtet? pm2 hat einige nette Features wie:

  • Ausführen eines Clusters
  • Neustarten von Instanzen im Cluster nacheinander (Zero-Down-Deployments)
  • Ressourcenüberwachung (zeigt Echtzeit-CPU- und Speicherauslastung an)
  • Verwalten Sie alle pm2-Prozesse mit dem CLI

Sie können Neustarts auch steuern, indem Sie die Option --restart-delay <delay> hinzufügen.

Hiermit eine vollständige Ausgabe der Hilfe dieses Tools.

%Vor%     
Marco Franssen 08.06.2016 10:59
quelle