在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,并且您的连接将被终止。