Переполнение памяти node js при большом количестве запросов mongodb

Всем доброго времени суток. Столкнулся с такой проблемой, при чтении dbf файлов и записи построчно в mongodb память скриптом съедается очень быстро вне зависимости от ее количества. Пробовал отключать валидацию mongoose и добавить таймауты для запросов, такое ощущение что память не очищается самостоятельно. Возможно у меня ошибка в коде, но я ее не вижу.

Код для подключения к базе и вызова функции чтения

const mongoose = require('mongoose');
const Controller = require('./controller/db');
const config = require('../config/dir_config.json');

async function updateBase() {
    console.log('Start update database.');

    let connection = mongoose.connect('mongodb://' + config.mongo.url + ':' + config.mongo.port + '/' + config.mongo.db.fias, options.dev);

    if (!connection) {
        return console.log('Error connection to database.');
    }

    let dataPromise = file_parse.getFileList(dbf_repo);
    dataPromise.then(async function (file_array) {
        console.log('Get array files.');
        for (let file of file_array) {
            console.log('Start parse file: ' + file.name + '.');
            let table_name = file.name.replace(/(\d)/gmu, '');
            await Controller.UpdateData(dbf_repo, table_name, file);
            console.log('End parse file: ' + file.name + '.');
        }
        console.log('Update complete!');
    }, function (err) {
        throw err;
    });
}

Код функции чтения dbf и записи в базу:

const mongoose = require('mongoose');
const DBF = require('stream-dbf');

module.exports.UpdateData = async function (file_directory, table_name, file) {
    return new Promise(async function (resolve, reject) {
        let Model = require('../../../models/' + table_name);
        let parser = new DBF(file_directory + '/' + file.name + '.' + file.format, {encoding: 'ibm866'});

        let array = [];
        parser.stream.on('data', function (record) {
            array.push(record);
        });
        parser.stream.on('end', function () {
            if (array.length > 0) {
                for (let document of array) {
                    Model.findOneAndUpdate({[Model.IdName()]: document[Model.IdName()]}, document, {
                        new: true,
                        upsert: true,
                    }, function (err) {
                        if (err) {
                            console.log(err);
                            reject();
                        }
                    });
                }
                array = null;
                resolve();
            } else {
                console.log('Array is empty');
                resolve();
            }
        });
    })
};

Ответы (0 шт):