3 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
我想補(bǔ)充一點(diǎn)。
您可以在admin數(shù)據(jù)庫(kù)上使用以下命令查看當(dāng)前緩沖區(qū)的使用情況:
> use admin
switched to db admin
> db.runCommand( { getParameter : 1, "internalQueryExecMaxBlockingSortBytes" : 1 } )
{ "internalQueryExecMaxBlockingSortBytes" : 33554432, "ok" : 1 }
它的默認(rèn)值為32 MB(33554432字節(jié))。在這種情況下,您的緩沖區(qū)數(shù)據(jù)不足,因此您可以使用自己定義的最佳值來(lái)增加緩沖區(qū)限制,例如50 MB,如下所示:
>? db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes:50151432})
{ "was" : 33554432, "ok" : 1 }
我們還可以通過(guò)mongodb配置文件中的以下參數(shù)永久設(shè)置此限制:
setParameter=internalQueryExecMaxBlockingSortBytes=309715200
希望這可以幫助 ?。?!
Note:此命令僅在3.0 +版本之后才支持

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
就我而言,有必要在代碼中修復(fù)必要的索引并重新創(chuàng)建它們:
rake db:mongoid:create_indexes RAILS_ENV=production
因?yàn)楫?dāng)需要字段索引時(shí)不會(huì)發(fā)生內(nèi)存溢出。
PS在此之前,我必須禁用創(chuàng)建長(zhǎng)索引時(shí)的錯(cuò)誤:
# 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 關(guān)注
- 950 瀏覽
添加回答
舉報(bào)