Node.js MongoClient正在创建池大小设置为1的22个连接?
我的mongod出现了“太多”连接的问题 因此,我启动了一个新的数据库,以进行“干净的测试”,我的池大小为1,如下所示:Node.js MongoClient正在创建池大小设置为1的22个连接?,node.js,mongodb,connection,Node.js,Mongodb,Connection,我的mongod出现了“太多”连接的问题 因此,我启动了一个新的数据库,以进行“干净的测试”,我的池大小为1,如下所示: MongoClient.connect( url, { server: { auto_reconnect: true, poolSize: 1, socketOptions: { keepAlive: 0 } } }, function( error, db ) { // save db instance } ) // when the app
MongoClient.connect( url, { server:
{ auto_reconnect: true,
poolSize: 1,
socketOptions: { keepAlive: 0 } }
}, function( error, db ) { // save db instance } )
// when the app is terminated i call
db.close()
然后我就能发现两件有趣的事
1-当应用程序打开时,它会创建22个到我的主应用程序的连接和24个到我的副本的连接
2-当我终止我的应用程序时,还有8到主应用程序剩余,12到辅助应用程序剩余
我做错什么了吗
关于如何清除那些“留守”连接,有什么建议吗
mongod版本:v2.6.5
mongodb包版本:1.4.19
编辑:
使用{}作为选项会产生相同的结果,因此选项似乎没有任何区别
编辑2:
完整测试代码:@wdberkeley确实,这些是来自副本和仲裁器的连接 我不知道这些会“算数” 我仍然认为我的问题是连接太多,但实际上RAM太少(: 问题解决了
很抱歉接受了我自己的答案,希望我能把你的答案标记为“wdberkeley”需要更多的代码和上下文!它是在循环中(还是某种递归函数)?不是循环,也不是递归函数。在应用程序启动后调用1次。您是分叉子进程,还是使用群集;其他节点进程是否在主进程退出后仍在运行?您是连接到副本中的每个节点并让驱动程序处理它,还是使用mongos?根本不是,我正在编辑问题以添加完整的测试代码。在哪里您的连接数是从哪里来的?这些很可能是涉及复制的后台线程的连接。