NODE.JS: 치명적 오류 - JS 할당 실패 - 대용량 엑셀 파일을 구문 분석하는 동안 메모리 부족 처리
모듈 "jsxlsx_async"로 xlsx 파일을 구문 분석하기 위해 nodejs를 사용하고 있으며 값이 mongodb에 저장됩니다.내 코드:
xlsx(file, function(err,wb){
if (err){
//handling err
}
//get data array
wb.getSheetDataByName('Sheet1', function(err,data){
if (err){
//handling err
}
//handling data
console.log(data);
});
});
사용: Nodejs: v0.10.25, MongoDB: v2.2.6, OS: win8, RAM: 6GB
내 단계: 1. 업로드된 xlsx 파일을 읽고 읽기 값을 JS 개체에 저장합니다. 2.JS 개체에 대한 값을 반복하여 읽기 값을 mongodb 컬렉션에 저장합니다.
이것은 작은 xlsx 파일에서 잘 작동하지만 저는 50MB보다 큰 xlsx 파일을 구문 분석하고 싶었습니다.
문제는 전체 xlsx 값을 단일 JS 개체에 저장하는 위치입니다.해결책을 위해 더 좋은 아이디어를 제공해 주세요.xlsx를 행별로 읽고 한 행을 읽는 즉시 값을 저장할 수 있는 더 좋은 방법이 있습니까?
저도 전에 비슷한 문제가 있었습니다.txt 파일에서 큰 JSON 객체를 읽어야 하는데 메모리가 부족해서 프로세스가 중단되었습니다.이 문제와 관련하여, 저의 해결책은 이 거대한 파일을 두 개의 파일로 나누는 것이었습니다.
당신의 문제와 관련하여, 저의 제안은 다음과 같습니다.
v8 엔진의 메모리 제한을 늘려 보십시오.https://github.com/joyent/node/wiki/FAQ 예(8192는 8GB를 의미):
node --max-old-space-size=8192 server.js
#1이 작동하지 않으면 다음 lib를 사용하여 xlsx 파일을 한 행씩 읽어 보십시오. https://github.com/ffalt/xlsx-extract
#1, #2가 작동하지 않으면 https://github.com/extrabacon/xlrd-parser 을 사용해 보십시오.
언급URL : https://stackoverflow.com/questions/21927377/node-js-fatal-error-js-allocation-failed-process-out-of-memory-while-parsin
'programing' 카테고리의 다른 글
디버그 모드에서 프로그램 실행 속도가 매우 느립니다. (0) | 2023.05.11 |
---|---|
달러 기호($"string")는 무엇을 합니까? (0) | 2023.05.11 |
블레이저 성능 (0) | 2023.05.11 |
오류 메시지 '_BSMachError: (os/kern) 잘못된 기능(20)' (0) | 2023.05.06 |
ASP에서 가방을 보는 방법.NET MVC 작동 (0) | 2023.05.06 |