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.
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.
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:
oder
%Vor%Ich schlage vor, die PM2
zu verwendenWelches ist die beste Option, um den Server-Produktionsserver auszuführen
Was sind die Vorteile, wenn Sie Ihre Anwendung auf diese Weise ausfü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: Ссылка
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%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
Haben Sie jemals pm2 als Alternative betrachtet? pm2 hat einige nette Features wie:
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%Tags und Links javascript node.js amazon-ec2 restart forever