Aujourd'hui, j'ai exécuté mon script pour l'indexation du système de fichiers pour actualiser l'index des fichiers RAID et après 4h, il s'est écrasé avec l'erreur suivante:
[md5:] 241613/241627 97.5%
[md5:] 241614/241627 97.5%
[md5:] 241625/241627 98.1%
Creating missing list... (79570 files missing)
Creating new files list... (241627 new files)
<--- Last few GCs --->
11629672 ms: Mark-sweep 1174.6 (1426.5) -> 1172.4 (1418.3) MB, 659.9 / 0 ms [allocation failure] [GC in old space requested].
11630371 ms: Mark-sweep 1172.4 (1418.3) -> 1172.4 (1411.3) MB, 698.9 / 0 ms [allocation failure] [GC in old space requested].
11631105 ms: Mark-sweep 1172.4 (1411.3) -> 1172.4 (1389.3) MB, 733.5 / 0 ms [last resort gc].
11631778 ms: Mark-sweep 1172.4 (1389.3) -> 1172.4 (1368.3) MB, 673.6 / 0 ms [last resort gc].
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x3d1d329c9e59 <JS Object>
1: SparseJoinWithSeparatorJS(aka SparseJoinWithSeparatorJS) [native array.js:~84] [pc=0x3629ef689ad0] (this=0x3d1d32904189 <undefined>,w=0x2b690ce91071 <JS Array[241627]>,L=241627,M=0x3d1d329b4a11 <JS Function ConvertToString (SharedFunctionInfo 0x3d1d3294ef79)>,N=0x7c953bf4d49 <String[4]\: ,\n >)
2: Join(aka Join) [native array.js:143] [pc=0x3629ef616696] (this=0x3d1d32904189 <undefin...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/bin/node]
2: 0xe2c5fc [/usr/bin/node]
3: v8::Utils::ReportApiFailure(char const*, char const*) [/usr/bin/node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/bin/node]
5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/bin/node]
6: v8::internal::Runtime_SparseJoinWithSeparator(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/bin/node]
7: 0x3629ef50961b
Le serveur est équipé de 16 Go de RAM et de 24 Go de swap SSD. Je doute fortement que mon script ait dépassé 36 Go de mémoire. Au moins ça ne devrait pas
Le script crée un index des fichiers stockés en tant que tableau d'objets avec des métadonnées de fichiers (dates de modification, autorisations, etc., pas de big data)
Voici le code de script complet: http://pastebin.com/mjaD76c3
J'ai déjà rencontré des problèmes de nœuds étranges dans le passé avec ce script, ce qui m'a forcé, par exemple. diviser l'index en plusieurs fichiers comme le nœud était en panne lors du travail sur des fichiers volumineux tels que String. Existe-t-il un moyen d'améliorer la gestion de la mémoire de nodejs avec d'énormes ensembles de données?
ng serve
ou distribuez-vous le résultat dung build
dossier / dist par un autre serveur Web comme express? Mais si votre projet Angular utilise plus que la mémoire standard de 1,7 Go, vous aurez peut-être un problème architectural dans votre application? Il semblerait que vous utilisiez le développement env avec nmp start, c'est peut-être une solution pour cela github.com/mgechev/angular-seed/issues/2063Juste au cas où quelqu'un se heurterait à cela dans un environnement où il ne peut pas définir directement les propriétés du nœud (dans mon cas, un outil de construction):
Vous pouvez définir les options de nœud à l'aide d'une variable d'environnement si vous ne pouvez pas les transmettre sur la ligne de commande.
la source
Si vous souhaitez augmenter l'utilisation de la mémoire du nœud à l'échelle mondiale - pas seulement un seul script, vous pouvez exporter une variable d'environnement, comme ceci:
export NODE_OPTIONS=--max_old_space_size=4096
Ensuite, vous n'avez pas besoin de jouer avec des fichiers lors de l'exécution de builds comme
npm run build
.la source
J'ai rencontré ce problème lors de la tentative de débogage avec VSCode, je voulais simplement ajouter ceci est la façon dont vous pouvez ajouter l'argument à votre configuration de débogage.
Vous pouvez l'ajouter à la
runtimeArgs
propriété de votre configuration danslaunch.json
.Voir l'exemple ci-dessous.
la source
Voici quelques valeurs d'indicateur pour ajouter des informations supplémentaires sur la façon d'autoriser plus de mémoire lorsque vous démarrez votre serveur de noeud.
1 Go - 8 Go
la source
je me débattais avec cela même après avoir défini --max-old-space-size.
Ensuite, j'ai réalisé le besoin de mettre des options --max-old-space-size avant le script karma.
il est également préférable de spécifier les deux syntaxes --max-old-space-size et --max_old_space_size mon script pour le karma:
référence https://github.com/angular/angular-cli/issues/1652
la source
--max-old-space-size=8192 --optimize-for-size --max_old_space_size=8192 --optimize_for_size
et cela a fonctionnéJ'ai eu un problème similaire lors de la construction angulaire AOT. Les commandes suivantes m'ont aidé.
Source: https://geeklearning.io/angular-aot-webpack-memory-trick/
la source
sudo npm -g install increase-memory-limit --unsafe-perm
fwiw, trouver et réparer un porc de mémoire avec quelque chose comme memwatch pourrait aider.
la source
%appdata%
appuyez sur Entrée%appdata%
> dossier npmng.cmd
dans votre éditeur préféré--max_old_space_size=8192
au bloc IF et ELSEVotre
node.cmd
fichier ressemble à ceci après le changement:la source
La variable d'environnement suivante peut être utilisée:
Autre remarque:
console.log()
consomme également de la mémoire dans le terminal.juste essayé de commenter la console.log () sur le terminal. car cela prendra aussi de la mémoire.
la source
NODE_OPTIONS= --max-old-space-size=somesize
si vous voulez changer la mémoire globalement pour le noeud (windows) allez dans paramètres système avancés -> variables d'environnement -> nouvelle variable utilisateur
la source
J'ai essayé 👍 le code ci-dessous et son bon fonctionnement✌.
exécutez la cmd pour définir une nouvelle taille.
Ou vous pouvez consulter le lien pour plus d'informations https://github.com/nodejs/node/issues/10137#issuecomment-487255987
la source
Je veux juste ajouter que dans certains systèmes, même en augmentant la limite de mémoire du nœud avec
--max-old-space-size
, ce n'est pas suffisant et il y a une erreur de système d'exploitation comme celle-ci:Dans ce cas, c'est probablement parce que vous avez atteint le mmap max par processus.
Vous pouvez vérifier le max_map_count en exécutant
et l'augmenter en exécutant
et corrigez-le pour qu'il ne soit pas réinitialisé après un redémarrage en ajoutant cette ligne
dans le
/etc/sysctl.conf
dossier.Cliquez ici pour plus d'informations.
Une bonne méthode pour analyser l'erreur consiste à exécuter le processus avec
strace
la source
J'ai rencontré ce même problème récemment et suis tombé sur ce sujet, mais mon problème était avec
React
App. Les modifications ci-dessous dans la commande de démarrage du nœud ont résolu mes problèmes.Syntaxe
Exemple
Pourquoi la taille est 16000 en taille max-old-space?
Fondamentalement, cela dépend de la mémoire allouée à ce thread et des paramètres de votre nœud.
Comment vérifier et donner la bonne taille?
C'est essentiellement rester dans notre moteur
v8
. le code ci-dessous vous aide à comprendre la taille de segment de mémoire de votre moteur de nœud local v8.la source
Je viens de rencontrer le même problème avec mon instance EC2 t2.micro qui a 1 Go de mémoire.
J'ai résolu le problème en créant un fichier d'échange à l'aide de cette URL et en définissant la variable d'environnement suivante.
export NODE_OPTIONS=--max_old_space_size=4096
Enfin, le problème a disparu.
J'espère que ce serait utile pour l'avenir.
la source
Juste au cas où cela pourrait aider les personnes ayant ce problème lors de l'utilisation des applications nodejs qui produisent une journalisation intensive, un collègue a résolu ce problème en redirigeant les sorties standard vers un fichier.
la source
Si vous essayez de lancer non pas
node
lui-même, mais un autre logiciel , par exemple,webpack
vous pouvez utiliser la variable d'environnement et lecross-env
package:la source
Pour le regroupement angulaire de projets, j'ai ajouté la ligne ci-dessous à mon fichier pakage.json dans la section des scripts .
Maintenant, pour regrouper mon code, j'utilise
npm run build-prod
au lieu deng build --requiredFlagsHere
J'espère que cela t'aides!
la source
Mettez à niveau le nœud vers la dernière version. J'étais sur le noeud 6.6 avec cette erreur et mis à niveau vers 8.9.4 et le problème a disparu.
la source
Dans mon cas, j'avais exécuté la
npm install
version précédente du nœud, après un certain jour, j'ai mis à niveau la version du nœud et le ramnpm install
pour quelques modules. Après cela, j'obtenais cette erreur. Pour résoudre ce problème, j'ai supprimé le dossier node_module de chaque projet et j'ai exécuté ànpm install
nouveau.J'espère que cela pourrait résoudre le problème.
Remarque: cela se produisait sur ma machine locale et cela a été corrigé sur la machine locale uniquement.
la source
Cette commande fonctionne parfaitement. J'ai 8 Go de RAM dans mon ordinateur portable, j'ai donc défini la taille = 8192. Il s'agit de ram et vous devez également définir un nom de fichier. Je lance l' exécution build NPM commande qui est la raison pour laquelle je build.js .
la source
Dans mon cas, j'ai mis à niveau la version node.js vers la dernière et cela a fonctionné comme un charme.
la source