3 回答
TA贡献1789条经验 获得超10个赞
我想补充一点。
您可以在admin数据库上使用以下命令查看当前缓冲区的使用情况:
> use admin
switched to db admin
> db.runCommand( { getParameter : 1, "internalQueryExecMaxBlockingSortBytes" : 1 } )
{ "internalQueryExecMaxBlockingSortBytes" : 33554432, "ok" : 1 }
它的默认值为32 MB(33554432字节)。在这种情况下,您的缓冲区数据不足,因此您可以使用自己定义的最佳值来增加缓冲区限制,例如50 MB,如下所示:
> db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes:50151432})
{ "was" : 33554432, "ok" : 1 }
我们还可以通过mongodb配置文件中的以下参数永久设置此限制:
setParameter=internalQueryExecMaxBlockingSortBytes=309715200
希望这可以帮助 !!!
Note:此命令仅在3.0 +版本之后才支持
TA贡献1880条经验 获得超4个赞
就我而言,有必要在代码中修复必要的索引并重新创建它们:
rake db:mongoid:create_indexes RAILS_ENV=production
因为当需要字段索引时不会发生内存溢出。
PS在此之前,我必须禁用创建长索引时的错误:
# mongo
MongoDB shell version: 2.6.12
connecting to: test
> db.getSiblingDB('admin').runCommand( { setParameter: 1, failIndexKeyTooLong: false } )
也可能需要reIndex:
# mongo
MongoDB shell version: 2.6.12
connecting to: test
> use your_db
switched to db your_db
> db.getCollectionNames().forEach( function(collection){ db[collection].reIndex() } )
- 3 回答
- 0 关注
- 877 浏览
添加回答
举报