欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB 內(nèi)存管理相關總結

 更新時間:2021年03月24日 11:51:52   作者:AsiaYe  
這篇文章主要介紹了MongoDB 內(nèi)存管理的相關資料,幫助大家更好的理解和學習使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下

MongoDB的內(nèi)存用在哪兒?

   在MongoDB中,加載各種依賴的lib到內(nèi)存、管理客戶端請求、元數(shù)據(jù)管理存儲等工作都需要占用內(nèi)存,但其實內(nèi)存使用的大部分還是在存儲引擎和客戶端連接請求處理方面。

   一方面是存儲引擎的cache,通常情況下,我們可以使用參數(shù)cacheSizeGB參數(shù)(下面會講到)來控制內(nèi)存使用率,一旦超過這個內(nèi)存使用率,則MongoDB的存儲引擎會淘汰掉部分內(nèi)存中的數(shù)據(jù)頁。

   正常運行的MongoDB實例,內(nèi)存使用率大約為80%的cacheSizeGB參數(shù)值,因為超過80%之后,內(nèi)存淘汰策略就開始淘汰過期的數(shù)據(jù)頁了,如果出現(xiàn)使用率過大,則多半表示當前實例內(nèi)存淘汰的壓力比較大。請求就有延時的可能。

   另一方面,如果客戶端的連接數(shù)過多,建立過多的tcp鏈接,這些連接的維護,需要有read buffer和write buffer以用來收發(fā)網(wǎng)絡包,所以也會產(chǎn)生開銷。每個連接占用的內(nèi)存大小約為2MB左右。

如何限制MongoDB對內(nèi)存的使用?

   最近在線上發(fā)現(xiàn)了一些有意思的現(xiàn)象,比如某一臺服務器上部署了MySQL和MongoDB的服務,然后內(nèi)存報警,說是內(nèi)存已經(jīng)使用了超過85%了,這個時候,通常我們會想到遷移服務。將MySQL或者MongoDB的服務切換到其他的機器上,這樣,服務器的內(nèi)存就可以節(jié)省下來。

    但是實際的現(xiàn)象就是,如果我們遷移了MySQL的服務之后,服務器的內(nèi)存臨時會降下來,但是一段時間過后,又會報警,因為MongoDB已經(jīng)將MySQL騰出來的內(nèi)存空間也占用完了。

    我們知道,在MySQL中,占用內(nèi)存比較多的就是innodb_buffer_pool,還有一堆其他的buffer,除此之外,連接數(shù)也是一個需要考慮的因素。

     在MongoDB中,如果我們不限制MongoDB的內(nèi)存使用,那么MongoDB就會盡可能的占用更多的內(nèi)存來提高讀寫性能。具體的策略如下:

    從MongoDB3.4開始, WiredTiger存儲引擎默認的cache size是下面2個值中較大的一個。

公式一:0.5*(物理內(nèi)存-1GB)

公式二:256MB

     例如,物理內(nèi)存4G,則cache size=1.5GB,如果物理內(nèi)存1.5G,則cache size=0.5*(1.5-1)=250MB < 256MB ,所以取值為256MB

     MongoDB中可以通過配置文件的內(nèi)容限定MongoDB所使用的內(nèi)存,關鍵參數(shù)如下:

storage:
 wiredTiger:
  engineConfig:
   cacheSizeGB: <number> # 單位是GB,浮點型
   journalCompressor: <string>
   directoryForIndexes: <boolean>
   maxCacheOverflowFileSizeGB: <number>
  collectionConfig:
   blockCompressor: <string>
  indexConfig:
   prefixCompression: <boolean>

    上面的參數(shù),一般情況下,單機單實例,建議配置在內(nèi)存的60%左右。

cacheSizeGB參數(shù)配置的注意事項

幾點建議:

1、不要增加WiredTiger的內(nèi)部cache size超過默認值

2、WiredTiger存儲引擎使用WiredTiger內(nèi)部緩存和文件系統(tǒng)緩存

3、WiredTiger會自動使用所有剩余的文件系統(tǒng)緩存

4、單機多實例請務必減少mongod的內(nèi)存分配值

如何查看內(nèi)存使用情況?

db.hostInfo()

這個命令可以查看MongoDB的內(nèi)存限制情況,查看結果如下:

SECONDARY> db.hostInfo()
{
  "system" : {
    "currentTime" : ISODate("2020-12-31T03:51:28.278Z"),
    "hostname" : "localhost.localdomain:24204",
    "cpuAddrSize" : 64,
    "memSizeMB" : 64393,
    "numCores" : 8,
    "cpuArch" : "x86_64",
    "numaEnabled" : false
  },

以上就是MongoDB 內(nèi)存管理相關總結的詳細內(nèi)容,更多關于MongoDB 內(nèi)存管理的資料請關注腳本之家其它相關文章!

相關文章

最新評論