婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MongoDB 內存管理相關總結

MongoDB 內存管理相關總結

熱門標簽:外呼線路資源屬于電信業務嗎 crm外呼系統聯系方式 小裙科技電銷機器人怎樣 河南電話外呼系統招商 內蒙古營銷智能外呼系統哪個好 呼和浩特外呼系統原理是什么 智能外呼系統官網 長沙電銷外呼防封卡是什么 青白江400企業電話申請

MongoDB的內存用在哪兒?

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

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

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

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

如何限制MongoDB對內存的使用?

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

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

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

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

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

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

公式二:256MB

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

     MongoDB中可以通過配置文件的內容限定MongoDB所使用的內存,關鍵參數如下:

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

    上面的參數,一般情況下,單機單實例,建議配置在內存的60%左右。

cacheSizeGB參數配置的注意事項

幾點建議:

1、不要增加WiredTiger的內部cache size超過默認值

2、WiredTiger存儲引擎使用WiredTiger內部緩存和文件系統緩存

3、WiredTiger會自動使用所有剩余的文件系統緩存

4、單機多實例請務必減少mongod的內存分配值

如何查看內存使用情況?

db.hostInfo()

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

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 內存管理相關總結的詳細內容,更多關于MongoDB 內存管理的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 解決MongoDB占用內存過大頻繁死機的方法詳解
  • python監控linux內存并寫入mongodb(推薦)
  • 解決MongoDB 排序超過內存限制的問題
  • 將MongoDB作為Redis式的內存數據庫的使用方法
  • cgroup限制mongodb進程內存大小
  • MongoDB 內存使用情況分析

標簽:呼倫貝爾 楚雄 舟山 白山 菏澤 池州 黃石 安順

巨人網絡通訊聲明:本文標題《MongoDB 內存管理相關總結》,本文關鍵詞  MongoDB,內存,管理,相關,總結,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB 內存管理相關總結》相關的同類信息!
  • 本頁收集關于MongoDB 內存管理相關總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 昌宁县| 禄劝| 杭锦旗| 册亨县| 辽宁省| 平舆县| 萝北县| 平潭县| 新化县| 南阳市| 南城县| 钟山县| 陆川县| 牙克石市| 荥经县| 平遥县| 靖西县| 正定县| 绿春县| 漳浦县| 溧阳市| 洛宁县| 基隆市| 虎林市| 陵川县| 隆子县| 绍兴县| 托克逊县| 文昌市| 宜黄县| 特克斯县| 抚宁县| 威信县| 濉溪县| 突泉县| 靖安县| 大英县| 英吉沙县| 鸡泽县| 枣庄市| 泊头市|