Hari ini aku berlari naskah saya untuk filesystem pengindeksan untuk menyegarkan RAID file index dan setelah 4h itu jatuh dengan kesalahan berikut:
[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
Server ini dilengkapi dengan RAM 16gb dan 24gb SSD swap. Saya sangat meragukan naskah saya melebihi 36gb memori. Setidaknya itu seharusnya't
Script membuat indeks dari file yang disimpan sebagai Array dari Objek dengan file metadata (modifikasi tanggal, izin, dll, tidak ada data yang besar)
Berikut ini's penuh kode script: http://pastebin.com/mjaD76c3
I've sudah experiend aneh node masalah di masa lalu dengan script ini apa yang memaksa saya misalnya. split indeks ke beberapa file sebagai node rusak. ketika bekerja pada file-file besar seperti String. Apakah ada cara untuk meningkatkan nodejs manajemen memori dengan besar dataset?
Jika aku ingat benar, ada standar yang ketat untuk membatasi penggunaan memori di V8 sekitar 1,7 GB, jika anda tidak meningkatkan secara manual.
Dalam salah satu produk kami yang kami ikuti solusi ini kami menggunakan script:
node --max-old-space-size=4096 yourFile.js
Ada juga akan menjadi ruang baru perintah tapi seperti yang saya baca di sini: a-tour-dari-v8-sampah-koleksi ruang baru hanya mengumpulkan yang baru dibuat data jangka pendek dan lama ruang yang berisi semua data yang bereferensi struktur yang harus di kasus anda pilihan terbaik.
Hanya dalam kasus orang berjalan ke dalam sebuah lingkungan di mana mereka tidak dapat mengatur node properties langsung (dalam kasus saya membangun alat):
NODE_OPTIONS="--max-old-space-size=4096" node ...
Anda dapat mengatur simpul pilihan menggunakan variabel lingkungan jika anda tidak bisa melewati mereka pada baris perintah.
Jika anda ingin meningkatkan penggunaan memori node secara global tidak hanya satu script, anda dapat mengekspor variabel lingkungan, seperti ini:
ekspor NODE_OPTIONS=--max_old_space_size=4096
Maka anda tidak perlu untuk bermain dengan file ketika menjalankan dibangun seperti
npm menjalankan membangun
.
Saya mengalami masalah ini ketika mencoba untuk men-debug dengan VSCode, jadi hanya ingin menambahkan ini adalah bagaimana anda dapat menambahkan argumen untuk debug anda setup.
Anda dapat menambahkannya ke runtimeArgs
milik anda config dalam peluncuran.json
.
Lihat contoh di bawah ini.
{
"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"
]
}
]}
saya berjuang dengan ini bahkan setelah pengaturan --max-tua-ruang-ukuran.
Kemudian saya menyadari perlu untuk menempatkan opsi --max-tua-ruang-ukuran sebelum karma script.
juga terbaik untuk menentukan kedua sintaks --max-tua-ruang-ukuran dan --max_old_space_size naskah saya untuk 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
referensi https://github.com/angular/angular-cli/issues/1652
Berikut ini adalah beberapa bendera-nilai untuk menambahkan beberapa info tambahan tentang cara untuk memungkinkan lebih banyak memori ketika anda memulai node server.
1GB - 8GB
``
simpul-max-tua-ruang-ukuran=1024 index.js
simpul-max-tua-ruang-ukuran=2048 index.js
simpul-max-tua-ruang-ukuran=3072 index.js
simpul-max-tua-ruang-size=4096 index.js
simpul-max-tua-ruang-ukuran=5120 index.js
simpul-max-tua-ruang-ukuran=6144 index.js
simpul-max-tua-ruang-ukuran=7168 index.js
simpul-max-tua-ruang-ukuran=8192 index.js
``
langkah-Langkah untuk memperbaiki kesalahan -
%appdata%
tekan enter %appdata%
> npm folderng.cmd
di editor favorit anda--max_old_space_size=8192
untuk IF dan ELSE blokAnda node.cmd
file akan terlihat seperti ini setelah perubahan:
@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" %*
)
Variabel lingkungan berikut dapat digunakan:
NODE_OPTIONS= --max-tua-ruang-ukuran=8192 .
Catatan lain: konsol.log()
juga mengkonsumsi memori di terminal.
hanya mencoba untuk komentar konsol.log() pada terminal. karena itu juga akan mengambil memori.
I've menghadapi masalah yang sama baru-baru ini dan datang di thread ini, tetapi masalah saya adalah dengan Bereaksi
App. Berikut perubahan pada node memulai perintah memecahkan masalah saya.
Sintaks ##
simpul-max-tua-ruang-size=<size> path-to/fileName.js
simpul-max-tua-ruang-ukuran=16000 scripts/build.js
Pada dasarnya, itu bervariasi tergantung pada memori yang dialokasikan untuk thread yang anda node pengaturan.
Ini pada dasarnya adalah untuk tinggal di mesin v8
. kode di bawah ini membantu anda untuk memahami Ukuran Tumpukan setempat node mesin v8.
const v8 = require('v8'); const totalHeapSize = v8.getHeapStatistics().total_available_size; const totalHeapSizeGb = (totalHeapSize / 1024 / 1024 / 1024).toFixed(2); konsol.log('totalHeapSizeGb: ', totalHeapSizeGb);
Untuk sudut proyek bundling, I've ditambahkan di bawah garis ke saya, pakage.json file dalam script bagian.
"build-prod": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng build --prod --base-href /"
Sekarang, untuk bundel kode saya, saya menggunakan npm menjalankan build-prod
bukan ng membangun --requiredFlagsHere
harap ini membantu!
Saya telah mencoba 👍 kode di bawah ini dan bekerja dengan baik✌.
set NODE_OPTIONS=--max_old_space_size=8172
Atau anda dapat memeriksa link ini untuk info lebih lanjut https://github.com/nodejs/node/issues/10137#issuecomment-487255987
Jika anda mencoba untuk memulai tidak node
itu sendiri, tetapi beberapa yang lain lembut, misalnya webpack
anda dapat menggunakan variabel lingkungan dan cross-env
paket:
sh $ cross-env NODE_OPTIONS='--max-tua-ruang-size=4096' \ webpack --kemajuan --config build/webpack.config.dev.js
Dalam kasus saya saya telah berlari npm install
pada versi sebelumnya dari node, setelah beberapa hari saya upgrade node versi dan ram npm install
untuk beberapa modul. Setelah ini saya mendapatkan kesalahan ini.
Untuk memperbaiki masalah ini saya dihapus node_module folder dari masing-masing proyek dan berlari npm install
lagi.
Berharap ini bisa memperbaiki masalah.
Catatan : hal Ini terjadi pada mesin lokal dan itu harus tetap pada komputer lokal saja.
sederhana hanya meningkatkan memori tumpukan dari 1 - 8 GBs untuk buka windows powershell atau cmd di direktori proyek anda dan ketik perintah di bawah ini, untuk mac buka terminal di direktori tersebut
node --max-old-space-size={size in MBs} index.js