MONGODB 2.6.8 的一个BUG [Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the ]
生活随笔
收集整理的這篇文章主要介紹了
MONGODB 2.6.8 的一个BUG [Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the ]
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
環(huán)境:mongoDB2.6.8 集群,
下午突然發(fā)現(xiàn)4個從節(jié)點,掛了3個,全都都出現(xiàn)以下提示:
2016-03-11T16:53:02.483+0800 [conn312773] Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the 64MB limit.
經(jīng)分析, [conn312773] 連接前面的查詢 全是統(tǒng)計分析類的查詢,后跟開發(fā)部確認。
他們自己認為是以下查詢 有問題。
這里不太常用到的是:? item:{$push:"$$ROOT"}
這個功能是這樣的: 查詢 到的數(shù)據(jù),把所有的數(shù)據(jù)明細表用$push 方式到item 再返回,
這樣處理好處是在一個頁面中,前面有匯總數(shù)據(jù),后面還有對應(yīng)的明細。
但缺點是如果明細值太大,那么就觸發(fā)了上面的BUG.在官方BUG說明中是說在版本2.4.6就已解決了。但在2.6.8我們還
是遇到,也有可能很少這樣用的原因吧。
db.getCollection('PInfo').aggregate([
?? {
??????? $match:{MID:86}
?? },
?? {
????? $group : {
????????? _id : { PID : "$PID"},
????????? sumcount : { $sum : 1 },
????????? item:{$push:"$$ROOT"}
????? }
?? }
])
我們的解決方法:
把item 中$push 的值從總條記錄,修改到只返回某幾個字段(盡量少,同時不要返回子文檔及數(shù)組,因為這兩種類型很難預(yù)見有多大)
再把查詢條件優(yōu)化成最小,每次只查詢少量數(shù)據(jù)。從而減少返回的數(shù)據(jù)量。
總結(jié)
以上是生活随笔為你收集整理的MONGODB 2.6.8 的一个BUG [Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the ]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个关于使用 $month,$dayOf
- 下一篇: MONGODB 权限认证