programing

NODE.JS: 치명적 오류 - JS 할당 실패 - 대용량 엑셀 파일을 구문 분석하는 동안 메모리 부족 처리

magicmemo 2023. 5. 11. 21:20
반응형

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 객체를 읽어야 하는데 메모리가 부족해서 프로세스가 중단되었습니다.이 문제와 관련하여, 저의 해결책은 이 거대한 파일을 두 개의 파일로 나누는 것이었습니다.

당신의 문제와 관련하여, 저의 제안은 다음과 같습니다.

  1. v8 엔진의 메모리 제한을 늘려 보십시오.https://github.com/joyent/node/wiki/FAQ 예(8192는 8GB를 의미):

    node --max-old-space-size=8192 server.js 
    
  2. #1이 작동하지 않으면 다음 lib를 사용하여 xlsx 파일을 한 행씩 읽어 보십시오. https://github.com/ffalt/xlsx-extract

  3. #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

반응형