Script til oprydning i node.js processer der låser webhotel

Dette script skal køre som et cron-job på dit cPanel-webhotel.

Dette er ikke den perfekte løsning (for der findes ingen) – det er snarere en midlertidig omgåelse, da den ikke løser selve problemerne. Det, scriptet gør, er at håndtere symptomerne (hængende processer) ved at sende dem et SIGTERM-signal for at få dem til at afslutte – og dermed frigøre låste ressourcer – hvilket skaber stabilitet omkring den NodeJS-app, der er hostet på webhotellet.

Formål
At køre NodeJS-applikationer i et cPanel-hostet miljø er lidt anderledes end at køre NodeJS-apps lokalt. Processer kan fejle og få cPanels proceskontrolsystem til at genstarte en ny NodeJS-instans – eller processer, der skulle have afsluttet, bliver hængende som “spøgelsesprocesser”. Det kan til sidst ende med at opbruge alle ressourcer, indtil cPanels Resource Monitor blokerer for yderligere brug.

cleanup_orphans.sh [options] 'SEARCHSTRING'

    Options:
    -v    Verbose
    -d    Dry-run - show intended behaviour but don't touch anything
    -f    Force kill - use SIGKILL instead of SIGTERM
    -h    Help (this usage message)

    Default SEARCHSTRING: 'lsnode:/home/$USER/'

    If called without 'SEARCHSTRING', the script runs through the internal 
    array of domains (foldernames added to search string), to clean up each
    'domain' separately, one by one.

Hvis scriptet kaldes med 'SEARCHSTRING' som input, erstattes den foruddefinerede SEARCHSTRING med det angivne input.

Ellers gennemløber scriptet det interne array af domæner (mappenavne, der tilføjes til søgestrengen) for at rydde op i hvert “domæne” separat, ét ad gangen.

Logging

Logning er implementeret for at have en historik – så man kan følge med i, hvor mange processer der bliver håndteret. Samtidig kan for meget logning skabe et nyt problem; vi ønsker ikke, at disken løber tør for plads på grund af endeløs logning. Løsningen er at begrænse logningen til to filer, der hver kan indeholde op til 1000 linjer.

Implementering i en specifik cPanel-løsning.

Implementering i en specifik cPanel-løsning

  1. Kopiér scriptet “as is” til en lokal disk.
  2. Scriptet har denne associative array, som indeholder rodmappenavnene for alle de cPanel-hostede Node.js-apps:
    declare -A domains
    domains[1]='mydomain.com'
    domains[2]='api.mydomain.com'
    domains[3]='dev.mydomain.com'
    domains[4]='test.mydomain.com'
    Redigér arrayet i din foretrukne editor, så det passer til din specifikke webhotel-løsning.
  3. Bekræft, at SEARCHSTRING faktisk indeholder det, du vil have scriptet til at lede efter:
    SEARCHSTRING="lsnode:/home/$USER/"
  4. Justér logstørrelsen, hvis du vil. Det er denne del, der håndterer logstørrelse og rotation af logfiler (jeg går ikke i detaljer her):
    # rotate log - maintain logsize at an acceptable limit
    LOGSIZE=$(cat $LOGDIR/$LOGFILE | wc -l)
    if [ $LOGSIZE -gt 1000 ]; then
        mv -f $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
    fi
  5. Justér LOGDIR, hvis du vil – den er pt. sat til at logge i scriptets mappe.
  6. Opret en mappe på dit webhotel til at opbevare egne scripts – f.eks.: /cronscripts.
  7. Kopiér det tilpassede cleanup_orphans.sh til webhotel-mappen: /cronscripts/cleanup_orphans.sh.
  8. Tilføj et cron-job i cPanel. Jeg foreslår at køre scriptet regelmæssigt, f.eks. hver 5–30. minut (afhængigt af trafikmængden, der skaber “orphaned” processer).
    Eksempel:
    */5 * * * * /home/infoqrco/cronscripts/cleanup_orphans.sh
  9. Overvåg den første kørsel; prøv evt. flagene -v (verbose) og -d (dry-run). Se, at logfilen bliver oprettet, og verificér, at cron-jobbet kører som forventet.

Færdig! Dine “orphaned” Node.js-processer bliver nu håndteret automatisk.

Original guide lavet af en af vores kloge kunder ;-) : https://github.com/jlmantov/shellscripts/blob/main/docs/cleanup_orphans.md

  • 0 Kunder som kunne bruge dette svar
Hjalp dette svar dig?

Ikke fundet en løsning?

Har du ikke fundet en løsning ved hverken at søge eller navigere rundt i vores kategorier, så kan du oprette en ny sag.

Opret ny sag

Relaterede artikler

Sådan løser du 503 fejl ved upload og import af data

503 fejl er en serverfejl, som opstår når du forsøger at bruge flere ressourcer end tillad på...

Sådan løser du 503 fejl på din hjemmeside

503 fejl opstår, når der ikke er ressourcer nok til at køre et script, og serveren derfor laver...

Jeg kan ikke tilgå mine egne sider, men andre kan

Oplever du, at du hverken kan logge på cPanel hos os eller se dine egne sider, mens andre kan, så...