Mongodb

WiredTiger 內部記憶體

  • June 12, 2017

它在 MongoDB 文件常見問題解答 ( https://docs.mongodb.com/manual/faq/storage/#wiredtiger-storage-engine ) 中有說明:

避免將 WiredTiger 內部記憶體大小增加到其預設值以上。

預設情況下應該是 RAM 的 50 % 或 60 %

storage.wiredTiger.engineConfig.cacheSizeGB 限制了 WiredTiger 內部記憶體的大小。作業系統會將可用的空閒記憶體用於文件系統記憶體,這允許壓縮的 MongoDB 數據文件保留在記憶體中。

我不明白這個說法。WT 記憶體是否包含壓縮數據和索引方面的工作集?如果是這樣,我們是否需要為 MongoDB 數據文件的某種記憶體映射文件保留額外的記憶體?

我的db.serverStatus().mem節目是這樣的:

{
   "bits" : 64,
   "resident" : 10518,
   "virtual" : 12131,
   "supported" : true,
   "mapped" : 0,
   "mappedWithJournal" : 0
}

所以我猜我沒有記憶體映射字節,那麼我可以增加de WT記憶體嗎?

謝謝 !

我們是否需要為 MongoDB 數據文件的某種記憶體映射文件保留額外的記憶體

serverStatus 輸出中的mem.mappedmem.mappedWithJournal指標僅適用於 MMAPv1 儲存引擎,因此使用 WiredTiger 時預計為 0。這些指標早於儲存引擎 API(和 WiredTiger),因此可能會在某個時候移至 serverStatus 的儲存引擎特定部分。

WT 記憶體是否包含壓縮數據和索引方面的工作集?

WiredTiger 內部記憶體用於未壓縮數據,它與磁碟上的壓縮數據格式不同。WiredTiger 記憶體之外的記憶體可用於文件系統記憶體(記憶體磁碟上的表示,包括壓縮)以及其他臨時 RAM 要求,例如每個連接的成本(每個連接 1MB)、記憶體中的排序、聚合和 JavaScript上下文。

您的工作集是您的應用程序經常訪問的數據和索引的總集。為了獲得最佳性能,這應該理想地適合 RAM。更大的 WiredTiger 記憶體將允許在 RAM 中儲存更多未壓縮的數據,但會犧牲可用於其他目的的記憶體。如果您的數據顯著壓縮,文件系統記憶體的更多可用記憶體將允許 RAM 中更大的總工作集(未壓縮 + 壓縮數據)。

所以我猜我沒有記憶體映射字節,那麼我可以增加de WT記憶體嗎?

根據 MongoDB 文件,您通常應該將 WiredTiger 記憶體保留為預設大小(或者甚至可能減小此大小)。您始終可以嘗試為您的工作負載和部署調整記憶體大小,但將其設置得太大可能會對性能產生不利影響。

引用自:https://dba.stackexchange.com/questions/176035