Script för att rensa Node.js-processer som låser ditt webbhotell

Detta skript ska köras som ett cron-jobb på ditt cPanel-webbhotell.

Detta är inte den perfekta lösningen (eftersom ingen sådan finns) – det är snarare en tillfällig lösning, eftersom det inte åtgärdar de faktiska problemen. Vad skriptet gör är att hantera symptomen (hängande processer) genom att skicka dem en SIGTERM-signal så att de avslutas – och därmed frigör låsta resurser – vilket skapar stabilitet kring den NodeJS-app som är hostad på webbhotellet.

Syfte
Att köra NodeJS-applikationer i en cPanel-miljö är lite annorlunda än att köra NodeJS-appar lokalt. Processer kan misslyckas och få cPanels processkontrollsystem att starta en ny NodeJS-instans – eller processer som borde ha avslutats hänger kvar som ”spökprocesser”. Detta kan till slut förbruka alla resurser tills cPanels Resource Monitor blockerar vidare användning.

cleanup_orphans.sh [options] 'SEARCHSTRING'

    Alternativ:
    -v    Verbose
    -d    Dry-run - visa avsett beteende men gör inga ändringar
    -f    Force kill - använd SIGKILL istället för SIGTERM
    -h    Help (detta hjälpmeddelande)

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

    Om det körs utan 'SEARCHSTRING' går skriptet igenom den interna 
    arrayen av domäner (mappnamn som läggs till i söksträngen), för att
    städa upp varje 'domän' separat, en i taget.

Om skriptet anropas med 'SEARCHSTRING' som indata, ersätts den fördefinierade SEARCHSTRING med den angivna indata.

Annars går skriptet igenom den interna arrayen av domäner (mappnamn som läggs till i söksträngen) för att städa upp varje ”domän” separat, en i taget.

Loggning

Loggning är implementerad för att ha en historik – så att man kan följa hur många processer som har hanterats. Samtidigt kan för mycket loggning skapa ett nytt problem; vi vill inte att disken ska ta slut på utrymme på grund av oändlig loggning. Lösningen är att begränsa loggningen till två filer, som vardera kan innehålla upp till 1000 rader.

Implementering i en specifik cPanel-lösning.

Implementering i en specifik cPanel-lösning

  1. Kopiera skriptet ”as is” till en lokal disk.
  2. Skriptet har denna associativa array som innehåller rotmappnamnen för alla Node.js-appar som hostas på cPanel:
    declare -A domains
    domains[1]='mydomain.com'
    domains[2]='api.mydomain.com'
    domains[3]='dev.mydomain.com'
    domains[4]='test.mydomain.com'
    Redigera arrayen i din favoritredigerare så att den passar din specifika webbhotellslösning.
  3. Bekräfta att SEARCHSTRING faktiskt innehåller det du vill att skriptet ska söka efter:
    SEARCHSTRING="lsnode:/home/$USER/"
  4. Justera loggstorleken om du vill. Detta är den del som hanterar loggstorlek och rotation av loggfiler (jag går inte in på detaljer här):
    # rotate log - håll loggstorleken inom en acceptabel gräns
    LOGSIZE=$(cat $LOGDIR/$LOGFILE | wc -l)
    if [ $LOGSIZE -gt 1000 ]; then
        mv -f $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
    fi
  5. Justera LOGDIR om du vill – den är för närvarande inställd på att logga i skriptets mapp.
  6. Skapa en mapp på ditt webbhotell för att lagra egna skript – till exempel: /cronscripts.
  7. Kopiera det anpassade cleanup_orphans.sh till webbhotellsmappen: /cronscripts/cleanup_orphans.sh.
  8. Lägg till ett cron-jobb i cPanel. Jag föreslår att du kör skriptet regelbundet, till exempel var 5–30:e minut (beroende på trafikmängden som skapar ”föräldralösa” processer).
    Exempel:
    */5 * * * * /home/infoqrco/cronscripts/cleanup_orphans.sh
  9. Övervaka den första körningen; prova eventuellt flaggorna -v (verbose) och -d (dry-run). Kontrollera att loggfilen skapas och verifiera att cron-jobbet körs som förväntat.

Klart! Dina ”föräldralösa” Node.js-processer hanteras nu automatiskt.

Originalguide skapad av en av våra smarta kunder ;-) : https://github.com/jlmantov/shellscripts/blob/main/docs/cleanup_orphans.md

  • 0 användare blev hjälpta av detta svar
Hjälpte svaret dig?

Hittade du ingen lösning?

Om du inte har hittat en lösning genom att söka eller navigera i våra kategorier kan du öppna ett nytt supportärende.

Öppna supportärenden

Relaterade artiklar

Hur du åtgärdar 503-fel på din webbplats

Ett 503-fel inträffar när det inte finns tillräckligt med resurser för att köra ett skript,...

Hur man löser 503-fel under datauppladdning och import

503-fel: Hur man hanterar överskridande av servergränserEtt 503-fel är ett serverproblem som...

Jag kan inte komma åt mina egna sidor, men andra kan

Om du upptäcker att du inte kan logga in på cPanel hos oss eller se dina egna sidor medan andra...

Så här begränsar du storleken på dina error_log-filer

Varje gång ett PHP-fel uppstår på din sida – oavsett om det bara är en varning eller ett faktiskt...