Azi am rulat script-ul meu pentru sistemul de fișiere de indexare pentru a reîmprospăta RAID fișiere index și după 4h s-a prăbușit cu următoarea eroare:
[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
Serverul este dotat cu 16gb RAM si 24gb SSD de swap. Mă îndoiesc scenariul meu a depășit 36gb de memorie. Cel puțin nu ar trebui't
Script creează indicele de fișiere stocate ca Matrice de Obiecte cu fișierele de metadate (modificare date, permisiuni, etc, nu-i mare de date)
Aici's full script code: http://pastebin.com/mjaD76c3
Am'am deja experiend ciudat nod probleme în trecut cu acest script ce m-a forțat de exemplu. index divizat în mai multe fișiere ca nod fost erori atunci când se lucrează pe astfel de fisiere mari ca Șir de caractere. Există vreo modalitate de a îmbunătăți nodejs de management al memoriei cu mare seturi de date?
Dacă îmi amintesc corect, nu există un standard strict în limita de utilizare de memorie în V8 de aproximativ 1,7 GB, dacă nu crește manual.
Într-unul din produsele noastre ne-am urmat această soluție în nostru implementa script:
node --max-old-space-size=4096 yourFile.js
Acolo va fi, de asemenea, un nou spațiu comanda dar cum am citit aici: un-turneu-de-v8-gunoi de colectare a noul spațiu doar colectează nou creat de date pe termen scurt și vechiul spațiu conține toate referite structuri de date care ar trebui să fie în cazul tău cea mai bună opțiune.
Doar în cazul în care cineva se execută în acest lucru într-un mediu în care ei nu se poate seta nod de proprietăți direct (în cazul meu un instrument de a construi):
NODE_OPTIONS="--max-old-space-size=4096" node ...
Puteți seta nod opțiuni folosind o variabilă de mediu, dacă nu poți să le treci pe linia de comandă.
Dacă doriți pentru a crește utilizarea de memorie de la nod la nivel global - nu numai un singur script, puteți exporta variabilă de mediu, astfel: export NODE_OPTIONS=--max_old_space_size=4096`
Atunci nu aveți nevoie pentru a juca cu fișiere atunci când rulează construiește ca
npm rula construi
.
Am întâlnit această problemă atunci când încearcă pentru a depana cu VSCode, așa că a vrut doar să adăugați acest lucru este modul în care puteți adăuga argumentul tau depanare configurare.
Puteți să-l adăugați la runtimeArgs proprietate de configurare în
lansare.json`.
A se vedea exemplul de mai jos.
{
"version": "0.2.0",
"configurations": [{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceRoot}\\server.js"
},
{
"type": "node",
"request": "launch",
"name": "Launch Training Script",
"program": "${workspaceRoot}\\training-script.js",
"runtimeArgs": [
"--max-old-space-size=4096"
]
}
]}
am fost lupta cu acest lucru, chiar și după stabilirea --max-vechi-spațiu de dimensiune.
Apoi mi-am dat seama de necesitatea de a pune opțiuni --max-vechi-spațiu de dimensiuni înainte de karma script.
de asemenea, cel mai bun pentru a specifica ambele sintaxe --max-vechi-spațiu-size și-max_old_space_size script-ul meu de karma :
node --max-old-space-size=8192 --optimize-for-size --max-executable-size=8192 --max_old_space_size=8192 --optimize_for_size --max_executable_size=8192 node_modules/karma/bin/karma start --single-run --max_new_space_size=8192 --prod --aot
referință https://github.com/angular/angular-cli/issues/1652
Aici sunt unele pavilion valori pentru a adăuga unele informații suplimentare privind modul de a permite mai multă memorie atunci când porniți telefonul dvs. nod server.
1GB - 8GB
``
nod-max-vechi-spațiu-size=1024 index.js
nod-max-vechi-spațiu-size=2048 index.js
nod-max-vechi-spațiu-size=3072 index.js
nod-max-vechi-spațiu-size=4096 index.js
nod-max-vechi-spațiu-size=5120 index.js
nod-max-vechi-spațiu-size=6144 index.js
nod-max-vechi-spațiu-size=7168 index.js
nod-max-vechi-spațiu-size=8192 index.js
``
Pași pentru a repara -
%appdata%
apăsați enter %appdata%
> folder npmng.cmd
în editorul dvs. favorit--max_old_space_size=8192
la DACĂ și ALTCINEVA blocTa nod.cmd
de fișier se pare ca acest lucru după schimbarea:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "--max_old_space_size=8192" "%~dp0\node_modules\@angular\cli\bin\ng" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "--max_old_space_size=8192" "%~dp0\node_modules\@angular\cli\bin\ng" %*
)
Următoarea variabilă de mediu pot fi utilizate:
NODE_OPTIONS= --max-vechi-spațiu-size=8192 .
O altă notă: consola.log()
consumă, de asemenea, de memorie în terminal.
a încercat să comenteze consola.log() de pe terminal. pentru că va lua, de asemenea, de memorie.
Am'am confruntat cu aceeași problemă, recent, și a venit peste acest thread, dar problema mea a fost cu "Reacționează" App. Mai jos modificări în nodul de start comanda mi-a rezolvat problemele.
nod-max-vechi-spațiu-size=<dimensiune> path-to/fileName.js
nod-max-vechi-spațiu-size=16000 scripts/build.js
Practic, aceasta variază depinde de memoria alocată la acel fir si nod setări.
Aceasta este de fapt sta in motorul nostru v8
. codul de mai jos vă ajută să înțelegeți Dimensiunea Heap-ul local nod motor v8.
const v8 = necesită('v8'); const totalHeapSize = v8.getHeapStatistics().total_available_size; const totalHeapSizeGb = (totalHeapSize / 1024 / 1024 / 1024).toFixed(2); console.log('totalHeapSizeGb: ', totalHeapSizeGb);
Pentru unghiulare proiect gruparea, am'am adăugat mai jos de linia a mea pakage.json fișier în scripturi secțiune.
"build-prod": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng build --prod --base-href /"
Acum, la pachet codul meu, eu folosesc npm rula construi-prod "în loc de" ng construi --requiredFlagsHere`
sper că acest lucru vă ajută!
Am încercat 👍 codul de mai jos și de lucru bine✌.
set NODE_OPTIONS=--max_old_space_size=8172
Sau puteți să verificați link-ul pentru mai multe informații https://github.com/nodejs/node/issues/10137#issuecomment-487255987
Dacă sunteți încercarea de a lansa nu nod
în sine, dar un alt soft, de exemplu webpack
poti folosi variabila de mediu și eco-env pachetului:
sh $ cross-env NODE_OPTIONS='--max-vechi-spațiu-size=4096' \ webpack --progres-config build/webpack.config.dev.js
În cazul meu am avut de alergat npm install
de pe vechea versiune de nod, după ce într-o zi am actualizat nod versiune și ram npm install
pentru câteva module. După aceasta, am fost obtinerea această eroare.
Pentru a rezolva această problemă am sters node_module folder la fiecare proiect și a fugit npm install
din nou.
Sper că acest lucru s-ar putea rezolva problema.
Notă : Acest lucru a fost întâmplă pe masina mea locale și l-am fixat pe mașina locală numai.
simplu de a crește de memorie heap de la 1 - 8 GBs pentru a deschide windows powershell sau cmd în proiect director și tastați comanda de mai jos, pentru mac deschide un terminal în acel director
node --max-old-space-size={size in MBs} index.js