Skripti Node.js-prosessien siivoamiseen, jotka lukitsevat webhotellisi

Tämä skripti tulee ajaa cron-työnä cPanel-webhotellissasi.

Tämä ei ole täydellinen ratkaisu (koska sellaista ei ole) – pikemminkin väliaikainen kiertotie, sillä se ei ratkaise varsinaisia ongelmia. Skripti käsittelee oireita (jumittuneita prosesseja) lähettämällä niille SIGTERM-signaalin, jotta ne päättyvät – ja vapauttavat näin lukitut resurssit – mikä tuo vakautta webhotellissa isännöityyn NodeJS-sovellukseen.

Tarkoitus
NodeJS-sovellusten ajaminen cPanel-ympäristössä on hieman erilaista kuin NodeJS-sovellusten ajaminen paikallisesti. Prosessit voivat epäonnistua ja saada cPanelin prosessinhallintajärjestelmän käynnistämään uuden NodeJS-instanssin – tai prosessit, joiden olisi pitänyt päättyä, jäävät roikkumaan ”haamuprosesseiksi”. Lopulta tämä voi kuluttaa kaikki resurssit, kunnes cPanelin Resource Monitor estää lisäkäytön.

cleanup_orphans.sh [options] 'SEARCHSTRING'

    Options:
    -v    Verbose
    -d    Dry-run - näytä aiottu toiminta mutta älä koske mihinkään
    -f    Force kill - käytä SIGKILL-signaalia SIGTERM:n sijaan
    -h    Help (tämä käyttöviesti)

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

    Jos kutsutaan ilman 'SEARCHSTRINGiä', skripti käy läpi sisäisen 
    domain-taulukon (hakusanaan lisätyt kansionimet) ja siivoaa
    jokaisen 'domainin' erikseen, yksi kerrallaan.

Jos skriptiä kutsutaan 'SEARCHSTRING'-syötteellä, ennalta määritelty SEARCHSTRING korvataan annetulla syötteellä.

Muutoin skripti käy läpi sisäisen domain-taulukon (hakusanaan lisättävät kansionimet) siivotakseen jokaisen ”domainin” erikseen, yksi kerrallaan.

Lokitus

Lokitus on toteutettu, jotta olisi mahdollista seurata historiatietoja – eli kuinka monta prosessia on käsitelty. Liiallinen lokitus voi kuitenkin luoda uuden ongelman; emme halua, että levytila loppuu loputtoman lokituksen takia. Ratkaisuna on rajoittaa lokit kahteen tiedostoon, joista kumpikin voi sisältää enintään 1000 riviä.

Toteutus tietyssä cPanel-ratkaisussa.

Toteutus tietyssä cPanel-ratkaisussa

  1. Kopioi skripti ”sellaisenaan” paikalliselle levylle.
  2. Skriptillä on tämä assosiatiivinen taulukko, joka sisältää kaikkien cPanelissa isännöityjen Node.js-sovellusten juurikansionimet:
    declare -A domains
    domains[1]='mydomain.com'
    domains[2]='api.mydomain.com'
    domains[3]='dev.mydomain.com'
    domains[4]='test.mydomain.com'
    Muokkaa taulukkoa suosikkieditorissasi niin, että se vastaa omaa webhotellirajapintaasi.
  3. Varmista, että SEARCHSTRING todella sisältää sen, mitä haluat skriptin etsivän:
    SEARCHSTRING="lsnode:/home/$USER/"
  4. Säädä lokikokoa halutessasi. Tämä on se osa, joka käsittelee lokikoon ja lokitiedostojen kierrätyksen (en mene tässä yksityiskohtiin):
    # rotate log - pidä lokin koko hyväksyttävissä rajoissa
    LOGSIZE=$(cat $LOGDIR/$LOGFILE | wc -l)
    if [ $LOGSIZE -gt 1000 ]; then
        mv -f $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
    fi
  5. Säädä LOGDIR, jos haluat – se on tällä hetkellä asetettu kirjaamaan skriptin omaan kansioon.
  6. Luo webhotelliisi kansio omia skriptejä varten – esimerkiksi: /cronscripts.
  7. Kopioi muokattu cleanup_orphans.sh webhotellikansioon: /cronscripts/cleanup_orphans.sh.
  8. Lisää cron-ajo cPanelissa. Suosittelen ajamaan skriptin säännöllisesti, esim. 5–30 minuutin välein (riippuen liikennemäärästä, joka luo ”orpoja” prosesseja).
    Esimerkki:
    */5 * * * * /home/infoqrco/cronscripts/cleanup_orphans.sh
  9. Seuraa ensimmäistä ajoa; kokeile tarvittaessa lippuja -v (verbose) ja -d (dry-run). Tarkista, että lokitiedosto luodaan ja varmista, että cron-ajo toimii odotetusti.

Valmis! ”Orvot” Node.js-prosessisi käsitellään nyt automaattisesti.

Alkuperäisen ohjeen teki eräs viisas asiakkaamme ;-) : https://github.com/jlmantov/shellscripts/blob/main/docs/cleanup_orphans.md

  • 0 Käyttäjät pitivät tätä hyödyllisenä
Oliko tämä vastaus hyödyllinen?

Etkö löytänyt ratkaisua?

Jos et ole löytänyt ratkaisua hakemalla tai selaamalla kategorioitamme, voit avata uuden tukipyynnön.

Avaa uusi pyyntö

Liittyvät artikkelit

En pääse omille sivuilleni, mutta muut pääsevät

Jos et pysty kirjautumaan cPaneliin tai tarkastelemaan omia sivujasi, mutta muut pystyvät, syynä...

Näin rajoitat error_log-tiedostojesi kokoa

Aina kun PHP-virhe ilmenee sivullasi – olipa kyse vain varoituksesta tai varsinaisesta virheestä...

503-virheiden korjaaminen verkkosivustolla

503-virhe ilmenee, kun skriptin suorittamiseen ei ole riittävästi resursseja ja palvelin...

503-virheen korjaaminen tiedostojen lataamisen ja tuonnin yhteydessä

503-virhe: Kuinka toimia, kun palvelinrajoitukset ylittyvät 503-virhe on palvelinperäinen virhe,...