Kommentaaride laadimisel ilmnes probleem.

Node.js rakendus ei käivitu või protsesside arv (Number of Processes) saab täis

Abikeskus  »  Teadmiste baas  »  Artikli vaatamine

  Trüki

Kui Node.js rakendus jääb taustale tööle, protsesside arv täitub ja sa ei saa enam isegi Terminali avada, on tegu tüüpilise olukorraga, mille saab enamasti ise lahendada ja edaspidi ära hoida. Allpool on selgitatud, mis toimub ja mida teha.

Sümptomid

  • cPaneli Ressursikasutus all on näitaja Number of Processes piiri lähedal või täis (näiteks 250 / 250).
  • cPaneli veateates või ressursikasutuse detailvaates on kirjas nproc – see on protsesside piiri tehniline nimetus.
  • Node.js-i rakenduse seadistus näitab rakendust olekus stopped, kuid koduleht töötab veebis endiselt edasi või piir jääb täis.
  • Terminal ei avane, kuvatakse viga Unable to fork või Resource temporarily unavailable.
  • Rakenduse uus versioon ei käivitu.

Processes


Miks see juhtub

Näitaja Number of Processes (tehnilise nimega nproc) ei loe ainult programme, vaid ka nende sisemisi töölõimi (threade). Node.js rakendused, eriti Next.js koos raskete sõltuvustega (näiteks PDF-ide loomiseks kasutatav peata Chrome, Playwright või Puppeteer), võivad hoida korraga kümneid kuni sadu töölõimi.

Kui rakendus käivitatakse mitu korda ilma eelmist peatamata – näiteks käsurealt käsitsi, mitte cPaneli kaudu – jäävad vanad protsessid taustale tööle. cPanel ei pruugi neid enam hallata ja nupp Stop neid ei sulge. Need „orvuks“ jäänud protsessid täidavad piiri ja takistavad uue versiooni käivitumist.


Andmebaasiteegid ja töölõimed (Prisma jt)

Osa teeke loob töölõimi serveri protsessorituumade arvu järgi. Näiteks Prisma päringumootor käivitab kuni ühe töölõime iga tuuma kohta – meie suuremates, 128-tuumalistes serverites tähendab see, et üksainus rakenduse instants võib kasutada ligikaudu 140 lõime ehk suurema osa kogu piirist. Kui selline rakendus töötab korraks kahe instantsina (näiteks uue versiooni paigalduse ajal), saab piir kohe täis ja kättesaamatuks muutuvad ka kõik teised sama konto veebilehed.

Mida teha:

  • Prisma puhul kaalu uuemat seadistust queryCompiler + driverAdapters (alates Prisma versioonist 6.7), mis ei kasuta eraldi päringumootorit – lõimede arv langeb kümnekonna peale ja rakendus mahub kenasti piiri sisse.
  • Kontrolli pärast iga paigaldust cPaneli Ressursikasutus alt, et protsesside arv on ootuspärane.

Kuidas vältida

  1. Käivita ja peata rakendus ainult cPaneli kaudu. Node.js-i rakenduse seadistus all on iga rakenduse real nupud Start, Stop ja Restart. Ära käivita rakendust käsitsi taustal – nii jäävad protsessid haldamatuks ja kogunevad.
  2. Uue versiooni paigaldamisel järgi kindlat järjekorda: peata rakendus (Stop) → lae uued failid üles → Run NPM Install → käivita (Start). Nii asendub üks instants puhtalt ja vanu protsesse alles ei jää.
  3. Loo build lokaalselt. Next.js puhul käivita ehitamine oma arvutis ja lae serverisse juba valmis failid. See väldib nii mälupiiri ületamist kui ka liigsete protsesside teket.
  4. Hoia sõltuvused kerged. Väldi serveris ilma graafilise liideseta brauseri (nt Chrome, Playwright, Puppeteer) jooksutamist näiteks PDF-ide loomiseks – see hoiab avatuna palju töölõime. Eelista kergemaid teeke.
  5. Jälgi protsesside arvu cPaneli Ressursikasutus alt.

Kuidas taastuda, kui piir on juba täis

  1. Ava Node.js-i rakenduse seadistus, peata rakendus (Stop) ja käivita uuesti (Start). Sageli see lahendab olukorra.
  2. Kui Terminal ei avane veaga Unable to fork, ongi põhjus selles, et protsesside piir on täis – ka Terminal vajab uut protsessi. Vabasta esmalt protsesse (eelmine samm) ja proovi siis uuesti.
  3. Kui Node.js-i rakenduse seadistus näitab olekut stopped, aga piir on ikka täis, on taustal „orvuks“ jäänud protsessid, mida cPanel ise sulgeda ei saa. Kui sul on SSH-ligipääs ja käsurea kasutamise oskus, saad need ise leida ja sulgeda (vt allpool „Kogenud kasutajale“). Kui SSH-ligipääsu pole või sa pole kindel, pöördu klienditoe poole ning anna teada oma domeen ja rakenduse nimi – vabastame need protsessid serveri tasandil.

Kogenud kasutajale: orbprotsessi ise sulgemine käsurealt

Eeltingimus: sul on SSH- või Terminali ligipääs ja käsurea kasutamise oskus. Kui neid pole, jäta see osa vahele ja pöördu klienditoe poole – eelmises punktis kirjeldatud juhis jääb kehtima.

Ohutusreegel (oluline): sulge protsess ainult siis, kui rakendus on cPaneli jaotises Node.js-i rakenduse seadistus olekus stopped ja oled kindel, et tegu on üleliigse, orvuks jäänud isendiga. Vale protsessi sulgemine võib katkestada töötava rakenduse või veebilehe. Pane tähele, et olek stopped ei garanteeri, et ühtegi aktiivset isendit pole – veebiserver võib rakenduse liikluse saabudes uuesti käivitada. Kui sul on vähimgi kahtlus, ära sule protsessi ise, vaid pöördu klienditoe poole.

  1. Kontrolli, et rakendus on jaotises Node.js-i rakenduse seadistus olekus stopped.
  2. Leia orbprotsess. Käivita Terminalis: ps -u <kasutajanimi> -o pid,etime,cmd | grep lsnode. Veerg etime näitab, kui kaua protsess on töötanud – pikk tööaeg viitab rippuma jäänud isendile. Pane kirja selle protsessi PID (esimene number).
  3. Sulge protsess: kill <PID>. Kui protsess ei reageeri, kasuta käsku kill -9 <PID>.
  4. Kontrolli cPaneli jaotises Ressursikasutus, et Number of Processes väärtus on langenud. Seejärel käivita rakendus jaotises Node.js-i rakenduse seadistus uuesti (Start).

Kui Terminal ei avane (veateade Unable to fork): sel juhul on protsesside piir juba täis ja ka kill vajab omakorda uut protsessi. Tee esmalt jaotises Node.js-i rakenduse seadistus StopStart, et protsesse vabastada, või pöördu klienditoe poole.


Kui olukord kordub pidevalt

Kui sul on mitu Node.js rakendust, mis peavad korraga pidevalt töötama, ja piir saab regulaarselt täis, võib jagatud majutuse protsesside ülempiir jääda kitsaks – see piir on jagatud majutuses ühine ja fikseeritud.


Aktiivne arendus ja majutuse valik

Jagatud majutus sobib kõige paremini valmis rakenduse stabiilseks tööks. Kui arendad aktiivselt – teed sagedasi builde, laadid tihti uusi versioone ja taaskäivitad rakendust mitu korda päevas –, soovitame arendustööd teha oma arvutis või eraldi arenduskeskkonnas ning laadida jagatud majutusse ainult valmis versioon.

Kui su rakendus vajab palju töölõimi või arendustempo on püsivalt kõrge, sobib sulle paremini virtuaalserver (VPS), kus protsessipiirangut ei ole. Meie klienditugi aitab sul sobiva lahenduse leida.


Vaata ka: Kuidas luua Node.js rakendust?


Jaga
Kas oli kasu?  
© Virtuaal.com Privaatsuspoliitika