Mongodb
如何獲取 MongoDB 的目前工作集大小
從文件中,它說
“為了獲得最佳性能,您的大部分活動集應該適合 RAM。”
例如,我
db.stats()
給我{ "db" : "mydb", "collections" : 16, "objects" : 21452, "avgObjSize" : 768.0516501957859, "dataSize" : 16476244, "storageSize" : 25385984, "numExtents" : 43, "indexes" : 70, "indexSize" : 15450112, "fileSize" : 469762048, "ok" : 1 }
哪個值是
working set size
?
評論中由 quanta 連結的SO 問題/答案是正確的,“工作集”基本上是您的系統將處於活動狀態/正在使用的數據量和索引。
db.stats()
除非您認為您需要在 RAM 中擁有整個數據集和整個索引,否則您無法判斷這將是什麼。也就是說,您可以計算出該數據庫的最大工作集,但不能計算出實際的活動工作集。最大值是以下各項之和:在您的情況下,考慮到您粘貼的輸出,該最大值約為 30.45 MiB。
為了跟踪實際記憶體使用情況,我建議將免費監控工具 - MMS
db.stats()
中可用的數據和記憶體圖(特別是常駐記憶體)結合起來。更新(2013 年 4 月 8 日):
2.4 版向serverStatus 命令添加了工作集大小估計器- 它只是一個估計值,但它可以用作指導並檢查上面的其他數字和估計值是否對您的 MongoDB 實例有意義。
更新(2016 年 9 月):
從我最初的答案開始三年後,事情變得更加複雜 - 通常獲取數據的大小和索引仍然是一個很好的起點。但是,在 MongoDB 中解決問題現在取決於您使用的儲存引擎。此外,作為集合級別鎖定工作的一部分,版本 3.0 刪除了上面為 MMAP 連結的工作集估計器(請參閱SERVER-13783)。假設您已經跳轉到新引擎,現在(例如)引擎的記憶體統計資訊可以作為替代。
WiredTiger
對於MMAP
,一般建議是查看頁面錯誤指標作為您的數據是否適合記憶體的代理。