mongodb db.collection.find({})通过.limit(101)

node-mongodb版本2.0.43和MongoDBshell版本:3.2.5

centos vm

我有一个(un-capped)1600文件(不是很大)的集合,他们都有标准的BSON _ids

如果我做

db.collection('docs').find({}).limit(100).toArray(function(e,r){console.log('done');}); 

我等待大约1/2秒的结果!

但是,如果我这样做

 db.collection('docs').find({}).toArray(function(e,r){console.log('done');}) 

我坐在这里5-10分钟,放弃。


那么我把限制设置为200(预计结果只要限制为100,但是它永远不会到来)

接下来我缩小了尝试极限150,101,110,105,103,102

并发现101限制后的结果停止!

这似乎完全没有用处,就像我真的有一个问题。

如果limit(200)花了两倍的时间,那么我会说这是我的查询性能问题,但它只是挂起和101结果是方式不令人满意! 一个可怜的假设:更不用说我的即时担忧,在任何时候,我的应用程序可能会挂起如果有任何查询有超过100个项目通过)

每个文档看起来像这样

 { "_id": "578eaa1ae642785679cd98b0", "linkid": "12633170", "advertisercid": "4612127", "websitename": "Car Rental 8", "destinationurl": "https://www.carrental8.com/en/", "who": "8027061-12633170-1467924618000", "href": "http://www.tkqlhce.com", "src": "http://www.awltovhc.com", "r1": 3, "r2": 44, "r3": 24, "r4": 58 } 

另一个假设:我不认为分析将在没有完成的查询上工作?

还有什么让我觉得奇怪的是,查询速度并没有真正下降多达101然后BOOM没有..

为什么查询永远挂起而不是变慢?

mongodb.log显示没有错

试过db.command({ profile : 1, slowms : 10 }); find之前,但没有configuration文件似乎发生。


yum更新mongodb-org 没有改变,虽然它没有更新: mongodb-org-server,mongodb-org-mongos,mongodb-org-shell和mongodb-org-tools!

将完全相同的集合复制到专用服务器上

它在那里工作不在vm上

在(蓝色)之前和悬挂之后(红色)拍摄了vm记忆的屏幕截图,但是我没有看到相当大的变化

在这里输入图像描述

将这两行添加到/etc/security/limits.conf

 root soft nofile 10000 root hard nofile 10000 

也试过https://serverfault.com/questions/591812/how-to-set-ulimits-for-mongod

重新启动服务器,并启动mongod,但没有改变!

由Mongodb工作人员(Christian Amor Kvalheim)修改成员意见进行升级

 npm install mongodb@2.2.4