Skript pro čištění procesů Node.js, které blokují váš webhosting

Tento skript by měl být spuštěn jako cron úloha na vašem cPanel webhostingovém účtu.

Toto není dokonalé řešení (protože žádné neexistuje) – je to spíše dočasné řešení, protože neřeší skutečné problémy. Skript řeší symptomy (zaseknuté procesy) tím, že jim pošle signál SIGTERM, aby se ukončily – a tím uvolnily zablokované zdroje – což vytváří stabilitu kolem NodeJS aplikace hostované na webhostingu.

Účel
Spouštění NodeJS aplikací v prostředí hostovaném na cPanelu je trochu jiné než spouštění NodeJS aplikací lokálně. Procesy mohou selhat a způsobit, že systém řízení procesů cPanelu restartuje novou instanci NodeJS – nebo procesy, které měly skončit, mohou zůstat zaseknuté jako „duchové procesy“. Nakonec to může spotřebovat všechny zdroje, dokud monitor zdrojů cPanelu nezablokuje další použití.

cleanup_orphans.sh [options] 'SEARCHSTRING'

    Možnosti:
    -v    Verbose
    -d    Dry-run - zobrazí zamýšlené chování, ale nic nezmění
    -f    Force kill - použije SIGKILL místo SIGTERM
    -h    Help (tato zpráva o použití)

    Výchozí SEARCHSTRING: 'lsnode:/home/$USER/'

    Pokud je skript volán bez 'SEARCHSTRING', projde interní 
    pole domén (názvy složek přidané do vyhledávacího řetězce), aby vyčistil každou
    „doménu“ zvlášť, jednu po druhé.

Pokud je skript volán s 'SEARCHSTRING' jako vstupem, předdefinovaný SEARCHSTRING bude nahrazen poskytnutým vstupem.

Jinak skript projde interní pole domén (názvy složek přidané do vyhledávacího řetězce), aby vyčistil každou „doménu“ zvlášť, jednu po druhé.

Logování

Logování je implementováno, aby byla historie – takže můžete sledovat, kolik procesů je zpracováváno. Zároveň však příliš mnoho logování může vytvořit nový problém; nechceme, aby disk došel kvůli nekonečnému logování. Řešením je omezit logování na dva soubory, z nichž každý může obsahovat až 1000 řádků.

Implementace v konkrétním řešení cPanelu.

Implementace v konkrétním řešení cPanelu

  1. Zkopírujte skript „jak je“ na lokální disk.
  2. Skript má toto asociativní pole, které obsahuje kořenové názvy složek všech Node.js aplikací hostovaných na cPanelu:
    declare -A domains
    domains[1]='mydomain.com'
    domains[2]='api.mydomain.com'
    domains[3]='dev.mydomain.com'
    domains[4]='test.mydomain.com'
    Upravte pole ve svém oblíbeném editoru tak, aby odpovídalo vaší konkrétní konfiguraci webhostingu.
  3. Ověřte, že SEARCHSTRING skutečně obsahuje to, co chcete, aby skript hledal:
    SEARCHSTRING="lsnode:/home/$USER/"
  4. Pokud chcete, upravte velikost logu. Toto je část, která řeší velikost logu a rotaci logovacích souborů (detaily zde nebudu rozebírat):
    # rotace logu - udržuje velikost logu v přijatelném limitu
    LOGSIZE=$(cat $LOGDIR/$LOGFILE | wc -l)
    if [ $LOGSIZE -gt 1000 ]; then
        mv -f $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
    fi
  5. Pokud chcete, upravte LOGDIR – aktuálně je nastaveno na logování ve složce skriptu.
  6. Vytvořte složku na vašem webhostingu pro uložení vlastních skriptů – například: /cronscripts.
  7. Zkopírujte upravený cleanup_orphans.sh do složky na webhostingu: /cronscripts/cleanup_orphans.sh.
  8. Přidejte cron úlohu v cPanelu. Doporučuji spouštět skript pravidelně, např. každých 5–30 minut (v závislosti na množství provozu, který vytváří „sirotčí“ procesy).
    Příklad:
    */5 * * * * /home/infoqrco/cronscripts/cleanup_orphans.sh
  9. Sledujte první spuštění; vyzkoušejte přepínače -v (podrobný výstup) a -d (suchý běh). Zkontrolujte, že je vytvořen logovací soubor, a ověřte, že cron úloha běží podle očekávání.

Hotovo! Vaše „sirotčí“ Node.js procesy jsou nyní automaticky spravovány.

Původní návod vytvořen jedním z našich chytrých zákazníků ;-) : https://github.com/jlmantov/shellscripts/blob/main/docs/cleanup_orphans.md

  • 0 Uživatelům pomohlo
Byla tato odpověď nápomocná?

Související články

Jak opravit chyby 503 na vašich webových stránkách

Chyba 503 nastane, když není dostatek prostředků pro spuštění skriptu, což způsobí vypršení...

Jak omezit velikost souborů error_log

Vždy, když na vašem webu dojde k chybě PHP – ať už jde jen o varování nebo skutečnou chybu – je...

Jak vyřešit chyby 503 při nahrávání a importu dat

Chyba 503: Jak řešit překročení limitů serveru Chyba 503 je problém serveru, který nastane, když...

Nemohu se dostat na své vlastní stránky, ale ostatní ano

Pokud zjistíte, že se nemůžete přihlásit do cPanelu u nás nebo vidět své vlastní stránky, zatímco...