CSV解析器和Promise的内存泄漏

时间:2019-07-15 14:39:26

标签: node.js

我在使用npm库'csv-parser'和promises逐行解析800k行CSV文件时遇到麻烦。

这就是我正在做的事情,只是暂停每一行并在用户在数据库中被提升后恢复。

在〜= 3000个用户处,使用了超过1GB的RAM,并且出现了内存堆使用异常。

const csv = require('csv-parser');
const fs = require('fs');
const path = require('path');

function parseData() {
  return new Promise((resolve, reject) => {
    const stream = fs.createReadStream(filePath)
      .pipe(csv(options))
      .on('data', row => {
        stream.pause();
        upsertUser(row)
          .then(user => {
            stream.resume();
          })
          .catch(err => {
            console.log(err);
            stream.resume();
          });
      })
      .on('error', () => reject())
      .on('end', () => resolve());
    return stream;
  });

upsert函数:

function upsertUser(row) {
  return user.find({
    where: {
      mail: row.emailAddress
    }
  });

编辑:这是节点检查器的图片:

memoryheap

0 个答案:

没有答案