Synology-Forum.nl

Packages => Officiële Packages => Topic gestart door: Bobo op 02 december 2019, 19:11:57

Titel: Node.js
Bericht door: Bobo op 02 december 2019, 19:11:57
Ben bezig met een Nodejs-script. Starten via de taakplanner lukt prima en programma-verloop lijkt normaal. Heb aan het einde een console.log opdracht geplaatst zodat ik kan zien dat programma aan einde is gekomen. Zijn daarmee de door taakplanner opgestarte user-processen die bij die node-opdracht horen dan ook beëindigd of moet er dan iets meer gebeuren? Ik heb namelijk het idee dat er steeds meer slapende processen op het systeem blijven hangen. Door het script zelf worden geen andere processen gestart. Er vindt met andere gebruikers via html interactie plaats met een node-server in dat script. Een reboot van de server laat al die slapende processen niet verdwijnen.
Titel: Re: Node.js
Bericht door: Birdy op 02 december 2019, 19:27:07
Welke versie ?
Titel: Re: Node.js
Bericht door: ufosyno op 02 december 2019, 19:29:12
Het is een eigenschap van Linux, dat processen die werden aangeroepen en tot een normaal einde komen "slapend" worden gehouden. Dit duurt totdat óf het proces weer vanuit dezelfde PID wordt aangeroepen, óf dat er geheugen moet worden vrijgemaakt. Slapende processen nemen geen CPU capaciteit, alleen blijft het geheugen dus - op de achtergrond - gealloceerd totdat het weer benodigd wordt. Ik denk dat de ontwerper hiervoor heeft gekozen om veelvuldig aangeroepen processen iets vlugger te laten starten.

Ik stoor me er allang niet meer aan, die soms tientallen slapende processen. 
Titel: Re: Node.js
Bericht door: Birdy op 02 december 2019, 19:56:18
Een reboot van de server laat al die slapende processen niet verdwijnen.
Natuurlijk wel echter, wanneer node in actie komt* dan ontstaan die processen vanzelf weer, zijn ze niet nodig, dan gaan ze slapen, zoals @ufosyno ook aangeeft (enz.).

*Heb net even alleen maar Node.js V8 geïnstalleerd, maar dan zie ik geen node processen lopen of slapen.
Titel: Re: Node.js
Bericht door: Briolet op 02 december 2019, 20:01:48
Heb aan het einde een console.log opdracht geplaatst zodat ik kan zien dat programma aan einde is gekomen.

Ik vink in dat soort gevallen aan om altijd een mailtje te versturen. (Dus niet alleen bij een fout). De output die normaal naar de terminal gaat, vind je dan terug in dat mailtje.
Titel: Re: Node.js
Bericht door: Bobo op 02 december 2019, 23:08:04
Met deze antwoorden kan ik weer verder! Die slapende processen komen dus toch van het script wat ik draai. Het worden er wel steeds meer, maar dat laat ik dan nu maar even zo. De mail-berichtjes vanuit het script heb ik niet nodig omdat de console-meldingen netjes in de log van de taakplanner komen (in het begin dus meer om de opbouw te checken - uiteindelijk slechts enkele tussentijdse status-berichten).
Titel: Re: Node.js
Bericht door: sciurius op 03 december 2019, 08:43:37
Het is een eigenschap van Linux, dat processen die werden aangeroepen en tot een normaal einde komen "slapend" worden gehouden. Dit duurt totdat óf het proces weer vanuit dezelfde PID wordt aangeroepen, óf dat er geheugen moet worden vrijgemaakt. Slapende processen nemen geen CPU capaciteit, alleen blijft het geheugen dus - op de achtergrond - gealloceerd totdat het weer benodigd wordt. Ik denk dat de ontwerper hiervoor heeft gekozen om veelvuldig aangeroepen processen iets vlugger te laten starten.

Wat je hier beschrijft is zoals het ongeveer werkt in Android.

In Linux systemen, zoals ook op de NAS, verdwijnen processen na het beëindigen, tenzij ze erop ingericht zijn om in de achtergrond te blijven wachten op nieuwe opdrachten (daemons). In zeer sporadische gevallen kan een beëindigd proces niet worden opgeruimd en dan blijven wat processtructuren zichtbaar als zombie. In de output van 'ps auxw' hebben die de status 'Z'. In die output zie je normaal vele tientallen daemons met status 'S' (sleeping).

Als jouw node proces is beëindigd en er blijven daarna nog node processen zichtbaar dan is er toch echt iets fout.