2016-04-07 34 views
5

Il nostro server esegue Node.JS su un cloud PaaS (in particolare Bluemix). Possiamo configurare la quantità di memoria allocata attraverso il pannello di controllo di PaaS, ma ho notato che per valori superiori a ~ 1,4 GB è necessario eseguire il nodo con l'opzione --max-old-space-size (spiegazione here).Node.JS - eventuali effetti collaterali dell'impostazione della dimensione massima dello spazio vecchio troppo grande?

Ciò significa che ogni volta che voglio cambiare la dimensione della memoria allocata, devo cambiarla in due punti nelle impostazioni.

Cosa accadrebbe se chiamo node --max-old-space-size 99999999999 app.js? Node.JS cercherà di allocare 99999999999 MB o considererà l'effettivo limite di memoria della VM \ Container in cui viene eseguito? Influisce sul comportamento del GC (ad esempio se sembra che ci sia molto spazio libero, il GC funzionerà meno volte)? Esiste un'opzione --max-old-space-size use-machine-limits?

Grazie

+0

Questo potrebbe essere utile, Se si stanno raggiungendo limiti di memoria così grandi nell'app http: // StackOverflow .com/questions/16586705/configuration-v8s-memory-management-to-be-smart-per-un-nodo-js-process – Rabea

risposta

4

Che cosa accadrebbe se io chiamo nodo --max-old-spazio-dimensioni 99999999999 app.js? Node.JS cercherà di allocare 99999999999MB, o sarà considerare il limite di memoria effettivo della VM \ Container in cui viene eseguito?

Il nodo non allocherà detta memoria, ma tenterà, in risposta alla crescente richiesta di memoria, se ciò accade, nell'applicazione - in modo incrementale, in blocchi ragionevolmente piccoli.

influisce sul comportamento del GC (vale a dire se sembra che ci sia un sacco di spazio libero, il GC verrà eseguito meno volte)?

Sì, lo spazio di possesso può contenere molti rifiuti e la de-allocazione sarà meno frequente.

Esiste un'opzione --max-old-space-size-use-machine-limits?

Onestamente, non lo so, ma lo cercherò e aggiornerò qui, se avrò informazioni su questo.

Spero che questo aiuti.

+0

In base a questo: https://github.com/nodejs/node/issues/2738 # issuecomment-138621483, non sembra esserci un'opzione "use-machine-limits", è necessario impostarla esplicitamente. – FrontierPsycho

0

dare una grande dimensione dell'heap renderà gc lento e manterrà i vecchi valori. Tuttavia, fornire grandi dimensioni dell'heap causerà frequenti operazioni GC e potrebbe esserci la minaccia di ottenere un'eccezione "Out-of-Memory"