Script na vyčistenie Node.js procesov, ktoré blokujú váš webhosting

Tento skript by mal bežať ako cron úloha na vašom cPanel webhostingu.

Toto nie je dokonalé riešenie (keďže také neexistuje) – je to skôr dočasné obídenie problému, pretože nerieši samotné príčiny. To, čo skript robí, je spracovanie symptómov (zaseknutých procesov) tým, že im pošle signál SIGTERM, aby sa ukončili – a tým uvoľnili uzamknuté zdroje – čo prináša stabilitu pre NodeJS aplikáciu hostovanú na webhostingu.

Účel
Prevádzkovanie NodeJS aplikácií v prostredí hostovanom na cPaneli je trochu odlišné od spúšťania NodeJS aplikácií lokálne. Procesy môžu zlyhať a spôsobiť, že procesný kontrolný systém cPanelu reštartuje novú NodeJS inštanciu – alebo procesy, ktoré sa mali ukončiť, zostanú visieť ako „duchovné procesy“. Nakoniec to môže spotrebovať všetky zdroje, až kým Resource Monitor v cPaneli nezablokuje ďalšie použitie.

cleanup_orphans.sh [options] 'SEARCHSTRING'

    Možnosti:
    -v    Verbose
    -d    Dry-run - ukáž zamýšľané správanie, ale nič nemen
    -f    Force kill - použi SIGKILL namiesto SIGTERM
    -h    Help (táto nápoveda)

    Predvolený SEARCHSTRING: 'lsnode:/home/$USER/'

    Ak je spustený bez 'SEARCHSTRING', skript prejde vnútorné 
    pole domén (názvy priečinkov pridané k vyhľadávaciemu reťazcu),
    aby vyčistil každú 'doménu' zvlášť, jednu po druhej.

Ak je skript spustený s parametrom 'SEARCHSTRING', preddefinovaný SEARCHSTRING sa nahradí poskytnutým vstupom.

Inak skript prejde vnútorné pole domén (názvy priečinkov pridané k vyhľadávaciemu reťazcu), aby vyčistil každú „doménu“ osobitne, jednu po druhej.

Logovanie

Logovanie je implementované, aby existovala história – aby ste mohli sledovať, koľko procesov bolo spracovaných. Zároveň však príliš veľa logovania môže vytvoriť nový problém; nechceme, aby sa disk zaplnil kvôli nekonečnému logovaniu. Riešením je obmedziť logovanie na dva súbory, z ktorých každý môže obsahovať až 1000 riadkov.

Implementácia v konkrétnom cPanel riešení.

Implementácia v konkrétnom cPanel riešení

  1. Skopírujte skript „tak ako je“ na lokálny disk.
  2. Skript obsahuje toto asociatívne pole, ktoré obsahuje názvy koreňových priečinkov všetkých Node.js aplikácií hostovaných na cPaneli:
    declare -A domains
    domains[1]='mydomain.com'
    domains[2]='api.mydomain.com'
    domains[3]='dev.mydomain.com'
    domains[4]='test.mydomain.com'
    Upravte pole vo svojom obľúbenom editore tak, aby zodpovedalo vášmu konkrétnemu riešeniu webhostingu.
  3. Overte, že SEARCHSTRING skutočne obsahuje to, čo chcete, aby skript hľadal:
    SEARCHSTRING="lsnode:/home/$USER/"
  4. Prispôsobte veľkosť logu, ak chcete. Toto je časť, ktorá spracováva veľkosť logu a rotáciu log súborov (nepôjdem tu do detailov):
    # rotate log - udržuj veľkosť logu v prijateľných medziach
    LOGSIZE=$(cat $LOGDIR/$LOGFILE | wc -l)
    if [ $LOGSIZE -gt 1000 ]; then
        mv -f $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
    fi
  5. Upravte LOGDIR, ak chcete – momentálne je nastavený tak, aby zapisoval do priečinka skriptu.
  6. Vytvorte priečinok na svojom webhostingu na uloženie vlastných skriptov – napríklad: /cronscripts.
  7. Skopírujte upravený cleanup_orphans.sh do priečinka webhostingu: /cronscripts/cleanup_orphans.sh.
  8. Pridajte cron úlohu v cPaneli. Odporúčam spúšťať skript pravidelne, napr. každých 5–30 minút (v závislosti od množstva prevádzky, ktorá vytvára „osirelé“ procesy).
    Príklad:
    */5 * * * * /home/infoqrco/cronscripts/cleanup_orphans.sh
  9. Sledujte prvé spustenie; vyskúšajte prípadne prepínače -v (verbose) a -d (dry-run). Skontrolujte, že log súbor bol vytvorený a overte, že cron úloha funguje podľa očakávania.

Hotovo! Vaše „osirelé“ Node.js procesy sú teraz spracovávané automaticky.

Pôvodný návod vytvoril jeden z našich múdrych zákazníkov ;-) : https://github.com/jlmantov/shellscripts/blob/main/docs/cleanup_orphans.md

  • 0 používateľov označilo ako užitočné
Pomohla vám táto odpoveď?

Nenašli ste riešenie?

Ak ste nenašli riešenie hľadaním alebo prehliadaním našich kategórií, môžete otvoriť nový ticket.

Otvoriť nový ticket

Súvisiace články

Ako opraviť chyby 503 na vašej webstránke

Chyba 503 sa objaví vtedy, keď nie je dostatok systémových zdrojov na vykonanie skriptu, čo...

Ako vyriešiť chyby 503 pri nahrávaní a importe dát

Chyba 503: Ako riešiť prekročenie limitov serveraChyba 503 je serverový problém, ktorý sa objaví,...

Nemôžem sa dostať na svoju stránku, ale ostatní áno

Ak zistíte, že sa nemôžete prihlásiť do cPanelu alebo zobraziť vlastné stránky, zatiaľ čo ostatní...

Ako obmedziť veľkosť vašich súborov error_log

Zakaždým, keď sa na vašej stránke vyskytne PHP chyba – či už ide len o upozornenie alebo skutočnú...