Skript zum Bereinigen von Node.js-Prozessen, die Ihr Webhosting blockieren

Dieses Skript sollte als Cron-Job auf Ihrem cPanel-Webhosting-Konto ausgeführt werden.

Dies ist nicht die perfekte Lösung (da keine existiert) – es ist eher eine vorübergehende Lösung, da es die eigentlichen Probleme nicht behebt. Was das Skript tut, ist die Behandlung der Symptome (hängende Prozesse), indem es ihnen ein SIGTERM-Signal sendet, um sie zu beenden – und dadurch gesperrte Ressourcen freizugeben – was Stabilität rund um die auf dem Webhost gehostete NodeJS-App schafft.

Zweck
Das Ausführen von NodeJS-Anwendungen in einer cPanel-gehosteten Umgebung unterscheidet sich etwas vom lokalen Ausführen von NodeJS-Apps. Prozesse können fehlschlagen und dazu führen, dass das Prozesskontrollsystem von cPanel eine neue NodeJS-Instanz neu startet – oder Prozesse, die eigentlich beendet sein sollten, können als „Geisterprozesse“ hängen bleiben. Letztendlich kann dies alle Ressourcen verbrauchen, bis der Ressourcenmonitor von cPanel die weitere Nutzung blockiert.

cleanup_orphans.sh [Optionen] 'SUCHSTRING'

    Optionen:
    -v    Ausführlich
    -d    Trockenlauf – zeigt das beabsichtigte Verhalten, ändert aber nichts
    -f    Erzwingen – verwendet SIGKILL statt SIGTERM
    -h    Hilfe (diese Gebrauchsanweisung)

    Standard-SUCHSTRING: 'lsnode:/home/$USER/'

    Wenn ohne 'SUCHSTRING' aufgerufen, durchläuft das Skript das interne 
    Array von Domains (Ordnernamen, die zum Suchstring hinzugefügt werden), 
    um jede 'Domain' einzeln zu bereinigen.

Wenn das Skript mit 'SUCHSTRING' als Eingabe aufgerufen wird, wird der vordefinierte SUCHSTRING durch die angegebene Eingabe ersetzt.

Andernfalls iteriert das Skript durch das interne Array von Domains (Ordnernamen, die zum Suchstring hinzugefügt werden), um jede „Domain“ einzeln nacheinander zu bereinigen.

Protokollierung

Die Protokollierung ist implementiert, um eine Historie zu haben – so können Sie nachverfolgen, wie viele Prozesse behandelt werden. Gleichzeitig kann zu viel Protokollierung ein neues Problem verursachen; wir wollen nicht, dass der Speicherplatz aufgrund endloser Protokollierung ausgeht. Die Lösung besteht darin, die Protokollierung auf zwei Dateien zu begrenzen, von denen jede bis zu 1000 Zeilen enthalten kann.

Implementierung in einer spezifischen cPanel-Lösung.

Implementierung in einer spezifischen cPanel-Lösung

  1. Kopieren Sie das Skript „wie es ist“ auf eine lokale Festplatte.
  2. Das Skript enthält dieses assoziative Array, das die Root-Ordnernamen aller cPanel-gehosteten Node.js-Apps enthält:
    declare -A domains
    domains[1]='mydomain.com'
    domains[2]='api.mydomain.com'
    domains[3]='dev.mydomain.com'
    domains[4]='test.mydomain.com'
    Bearbeiten Sie das Array in Ihrem bevorzugten Editor, damit es zu Ihrer spezifischen Webhosting-Konfiguration passt.
  3. Überprüfen Sie, dass SUCHSTRING tatsächlich das enthält, wonach das Skript suchen soll:
    SEARCHSTRING="lsnode:/home/$USER/"
  4. Passen Sie die Protokollgröße an, wenn Sie möchten. Dies ist der Teil, der die Protokollgröße und die Rotation der Protokolldateien verwaltet (ich werde hier nicht ins Detail gehen):
    # rotiere Protokoll – halte Protokollgröße auf einem akzeptablen Limit
    LOGSIZE=$(cat $LOGDIR/$LOGFILE | wc -l)
    if [ $LOGSIZE -gt 1000 ]; then
        mv -f $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
    fi
  5. Passen Sie LOGDIR an, wenn Sie möchten – es ist derzeit so eingestellt, dass im Skriptordner protokolliert wird.
  6. Erstellen Sie einen Ordner auf Ihrem Webhost, um Ihre eigenen Skripte zu speichern – zum Beispiel: /cronscripts.
  7. Kopieren Sie das angepasste cleanup_orphans.sh in den Webhost-Ordner: /cronscripts/cleanup_orphans.sh.
  8. Fügen Sie einen Cron-Job in cPanel hinzu. Ich empfehle, das Skript regelmäßig auszuführen, z. B. alle 5–30 Minuten (abhängig vom Verkehrsaufkommen, das „verwaiste“ Prozesse erzeugt).
    Beispiel:
    */5 * * * * /home/infoqrco/cronscripts/cleanup_orphans.sh
  9. Überwachen Sie den ersten Lauf; probieren Sie die Flags -v (ausführlich) und -d (Trockenlauf) aus. Prüfen Sie, ob die Protokolldatei erstellt wird, und verifizieren Sie, dass der Cron-Job wie erwartet läuft.

Fertig! Ihre „verwaisten“ Node.js-Prozesse werden nun automatisch behandelt.

Originalanleitung erstellt von einem unserer cleveren Kunden ;-) : https://github.com/jlmantov/shellscripts/blob/main/docs/cleanup_orphans.md

  • 0 Benutzer fanden dies hilfreich
War diese Antwort hilfreich?

Verwandte Artikel

Wie man 503-Fehler auf Ihrer Website behebt

Ein 503-Fehler tritt auf, wenn nicht genügend Ressourcen vorhanden sind, um ein Skript...

Wie man die Größe der error_log-Dateien begrenzt

Jedes Mal, wenn auf Ihrer Website ein PHP-Fehler auftritt – sei es nur eine Warnung oder ein...

Wie man 503-Fehler beim Hochladen und Importieren von Daten behebt

503-Fehler: Wie man mit überschrittenen Servergrenzen umgeht Ein 503-Fehler ist ein...

Ich kann nicht auf meine eigenen Seiten zugreifen, aber andere können

Wenn Sie feststellen, dass Sie sich nicht bei cPanel anmelden oder Ihre eigenen Seiten sehen...