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

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ät503-virhe on palvelinperäinen virhe,...

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ä...