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 ]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
環境:mongoDB2.6.8 集群,
下午突然發現4個從節點,掛了3個,全都都出現以下提示:
2016-03-11T16:53:02.483+0800 [conn312773] Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the 64MB limit.
經分析, [conn312773] 連接前面的查詢 全是統計分析類的查詢,后跟開發部確認。
他們自己認為是以下查詢 有問題。
這里不太常用到的是:? item:{$push:"$$ROOT"}
這個功能是這樣的: 查詢 到的數據,把所有的數據明細表用$push 方式到item 再返回,
這樣處理好處是在一個頁面中,前面有匯總數據,后面還有對應的明細。
但缺點是如果明細值太大,那么就觸發了上面的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 的值從總條記錄,修改到只返回某幾個字段(盡量少,同時不要返回子文檔及數組,因為這兩種類型很難預見有多大)
再把查詢條件優化成最小,每次只查詢少量數據。從而減少返回的數據量。
總結
以上是生活随笔為你收集整理的MONGODB 2.6.8 的一个BUG [Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the ]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个关于使用 $month,$dayOf
- 下一篇: MONGODB 权限认证