我想使用的Node.js应用如何解决内存泄漏因.MAP功能
从我的MSSQL数据库9万条记录导出到一个MySQL数据库我遇到了内存问题的node.js ()蓝色鸟Promise.map
下面的Myfucntion()调用doThis()函数,它从我的Mssql数据库获取一组记录,然后将记录插入MySql数据库。
Myfucntion(){
Promise.map(ids, id => doThis(id).then(results => console.log(results)), { concurrency: 5});
}
const doThis = async (id) => {
try{
const results = await sql.query`select results where id = ${id}`;
if((results && results.recordset) && results.recordset.length > 0) {
results.recordset.map(asset => insertResultslAsset(convertResultAsset(asset)));
}
}
catch(err){
console.log(err)
}
};
convertResultAsset(asset)函数在插入之前创建一个4属性对象。
我怀疑发生存储器泄漏,因为经转换的资产被递增地存储在存储器中与所述.MAP迭代
我能够通过上运行--max岁空间尺寸= 20000到缓解了问题该程序。
在执行doThis()函数的插入之后,我不需要存储转换后的资产。
有没有办法从.map函数释放这些对象?
我的50美分:处理9M记录时,您的代码应该针对性能进行优化,而不是对友好性进行优化。我认为你最好使用经典的for循环,并且......获得一堆id然后查询它们有什么用?还有另一种方式吗?这些9毫升的查询是你想要执行的吗?此代码是转换的运行一次脚本吗?还是会定期运行? – user5328504
'insertResultslAsset'或'convertResultAsset'实现可能会泄漏。 – Will