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
希望這可以幫助 ?。。?/p>
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 關注
- 933 瀏覽
添加回答
舉報