我在 node.js 内存泄漏方面遇到了一些麻烦,并且已经找到了下面包含的最小代码。它只是使用本机 node.js 驱动程序连接到 MongoDB 复制集(使用 Mongoose 的行为也相同)。随着时间的推移,使用的堆会增加(使用下面的 HeapDump 模块跟踪)。垃圾收集似乎并没有清理所有内容,并且如下所示增加。
您认为这是与 MongoDB 本机驱动程序相关的内存泄漏还是其他原因?
注意:我尝试使用 promise 而不是回调,没有任何区别,我还查找了任何连接错误和断开连接,但从未发现任何问题。
// Simplest mongoDB connection app
const MongoClient = require('mongodb').MongoClient;
const db_name = 'proto2'; // 'dev'; 'proto2'
let _db;
require('./HeapDump').init();
// connect to mongoDB database
MongoClient.connect('mongodb://host1,host2,host3/?replicaSet=replSet1', {useNewUrlParser: true}, (err, database) => {
console.log('Connected to db ' + db_name);
_db = database.db(db_name);
});
Run Code Online (Sandbox Code Playgroud)
HeapDump 模块很简单:
module.exports.init = function () {
setInterval(tickHeapDump, 2000);
};
function tickHeapDump() {
setImmediate(function () {
heapDump();
});
}
function heapDump() { …Run Code Online (Sandbox Code Playgroud)