在MongoDB中,如果close()有时不被调用,如何确保所有连接都将被closures?

我正在使用node.js和MongoDB,我有asynchronous代码( async.queue )来更新MongoDB。

当队列中的所有任务完成后,我打电话

 db.close() // db is a Mongo client instance 

因此任务使用的所有连接都closures。 但是,在极less情况下,我发现在mongoDB日志中存在从未closures的开放连接。 所以几个星期后,会有数百个连接永远不会closures。

我研究发现,也许我应该设置maxIdleTimeMS这个选项,但是这个选项并不是所有的驱动都支持(node.js驱动不支持这个选项)。

即使我可以微调我的代码,以确保没有这样的条件, close()不被调用。 我仍然想知道如果一个应用程序由于某种原因(或作为额外的保险)没有调用db.close() ),有什么办法来防止在MongoDB中挂起连接?

nodejs mongodb驱动程序在闲置时断开连接

处理MongoDB断开/重新连接节点

看起来像空闲一段时间后,连接closures。

目前还不清楚哪个驱动程序被使用,但在其中的一个post中有链接到文档:

http://mongodb.github.io/node-mongodb-native/api-generated/server.html#server

将keepAlive设置为0,并且您的连接将被终止。