我使用MongoDB的 一万份文件:3.0.6 节点驱动程序蒙戈海量内存的使用,同时导入使用MongoDB的节点驱动
我要导入万份文件到蒙戈。我创建了1000个文档的数组,并调用insertMany()来批量插入它们。该过程在70秒内完成
发生这种情况时,我看到节点进程内存使用量从〜100MB猛增到〜800MB左右。
是否是内存泄漏。如果是的话,我该如何去识别内存泄漏? 如果不是,这种行为的解释是什么?
编辑:下面是我使用的代码。
var csv = require('csv'),
fs = require('fs'),
Q = require('q'),
MongoClient = require('mongodb').MongoClient;
var COLLECTION_NAME = 'transactions';
var insertDocument = function(db, doc) {
return db.collection(COLLECTION_NAME).insertMany(doc);
};
MongoClient.connect("mongodb://localhost:" + 27017 + "/integration", function(err, db) {
if (!err){
console.time("Import Time");
var csvParser = csv.parse({
columns: true,
trim: true
});
csvParser.payload = [];
var promisesArray = [],
batchReadCount = 0;
csvParser.on('readable', function() {
var data = csvParser.read();
if (data !== null) {
csvParser.payload.push(data);
batchReadCount++;
}
if (batchReadCount == 1000) {
promisesArray.push(insertDocument(db, csvParser.payload));
batchReadCount = 0;
csvParser.payload = [];
}
});
csvParser.on('end', function() {
if (csvParser.payload.length > 0) {
promisesArray.push(insertDocument(db, csvParser.payload));
}
Q.all(promisesArray).then(function(result) {
console.timeEnd("Import Time");
docdb.close();
}, function(error) {
console.log(error);
console.timeEnd("Import Time");
});
});
var readStream = fs.createReadStream('million.csv');
readStream.pipe(csvParser);
}
})
很难说,没有任何实际的代码看 – noppa
是的,你应该发布你的代码,所以我们可以提供帮助。 – alexi2