亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Node.js堆內存不足

Node.js堆內存不足

月關寶盒 2019-09-19 16:36:55
今天我運行我的腳本進行文件系統索引以刷新RAID文件索引,并在4小時后崩潰并出現以下錯誤:[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服務器配備16GB RAM和24GB SSD交換。我非常懷疑我的腳本超過36GB的內存。至少它不應該腳本創建存儲為具有文件元數據的對象數組的文件索引(修改日期,權限等,沒有大數據)這是完整的腳本代碼:http: //pastebin.com/mjaD76c3我已經在過去使用這個腳本遇到了奇怪的節點問題,這迫使我如此。將索引拆分成多個文件,因為當處理像String這樣的大文件時,節點會出現故障。有沒有辦法用龐大的數據集改進nodejs內存管理?
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

如果我沒記錯的話,如果不手動增加,則V8中的內存使用量有一個嚴格的標準限制,大約為1.7 GB。


在我們的一個產品中,我們在部署腳本中遵循了此解決方案:


 node --max-old-space-size=4096 yourFile.js

還有一個新的空間命令,但正如我在這里讀到的:a-tour-of-v8-garbage-collection新空間僅收集新創建的短期數據,舊空間包含所有應引入的數據結構你的情況是最好的選擇。


查看完整回答
反對 回復 2019-09-19
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

萬一有人在一個他們無法直接設置節點屬性的環境中遇到這種情況(在我的例子中是一個構建工具):


NODE_OPTIONS="--max-old-space-size=4096" node ...

如果無法在命令行上傳遞節點選項,則可以使用環境變量設置節點選項。


查看完整回答
反對 回復 2019-09-19
  • 3 回答
  • 0 關注
  • 1492 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號