web-dev-qa-db-fra.com

NodeJS recommandé max-old-space-size

J'ai du mal à comprendre comment NodeJS agit en fonction du paramètre max-old-space-size.

Dans mon cas, par exemple, j'exécute deux instances t2.small aws (2 Go de RAM).

Je ne sais pas pourquoi, mais j'ai défini max-old-space-size = 4096 (4 Go). Que fait le noeud dans ce cas? Cette configuration pourrait-elle conduire à un échec d'allocation de mémoire possible?

Comment déterminer la valeur correcte de max-old-space-size en fonction des ressources du serveur?

PD: Mon application augmente constamment l'utilisation de la mémoire et j'essaie de tout comprendre des composants internes des nœuds.

33
Borjante

"Ancien espace" est la section la plus grande et la plus configurable du segment de mémoire géré de V8 (c'est-à-dire où vivent les objets JavaScript), et le drapeau --max-old-space-size en contrôle la taille maximale. À mesure que la consommation de mémoire approche de la limite, la V8 consacrera plus de temps à la récupération de place afin de libérer de la mémoire inutilisée.

Si la consommation de mémoire de tas (c'est-à-dire des objets vivants que le CPG ne peut pas libérer) dépasse la limite, la V8 bloquera votre processus (faute d'alternative), vous ne voudrez donc pas le définir trop bas. Bien sûr, si vous le définissez trop haut, l'utilisation de la pile supplémentaire autorisée par la V8 pourrait entraîner une insuffisance de mémoire pour l'ensemble de votre système (et échanger ou tuer des processus aléatoires, faute d'alternative).

En résumé, sur une machine disposant de 2 Go de mémoire, je définirais probablement --max-old-space-size à environ 1,5 Go pour laisser de la mémoire pour d'autres utilisations et éviter la permutation.

56
jmrk