教你玩轉mongdb占用快取記憶體過大導致巨集機

2021-08-18 14:09:37 字數 683 閱讀 6433

mongdb記憶體管理機制:

目前,mongdb使用的是記憶體對映儲存引擎,它會把磁碟io操作轉換成記憶體操作,如果是讀操作,記憶體中多的資料起到快取的作用,如果是寫操作,記憶體還可以把隨機的寫操作轉換成順序的寫操作,總之可以大幅度提公升效能,mongdb並不干涉記憶體管理工作,而是把這些工作留給作業系統的虛擬快取管理器去處理,這樣的好處就是簡化了mongdb的工作,提高了mongdb的讀寫效率,但壞處就是會占用很大的記憶體,讀取資料越大占用記憶體越高;

方便控制記憶體的機制,一種是加索引,提高效率並且減少記憶體的占用,但是這種方法不是最有效控制記憶體的方法;

一種是cgroup這個是linux的乙個核心元件,只需要安裝控制介面程式即可 :

1.安裝並啟動:cgroup

2.新增乙個記憶體組:group dblimitedgroup

3.新增程序限制:指定程序使用此記憶體組:

4.重啟cgroup

6.啟動mongdb:cgexec -g 記憶體組 ./mongod -f &

7.給mongdb新增快取限制:新增乙個配置檔案或者直接使用以下命令啟動:

mongod --dbpath /a/path/to/db --logpath /a/path/to/log --storageengine wiredtiger --wiredtigerengineconfigstring="cache_size=200m" --fork

教你玩轉Linux vi vim

vi vim 的使用 基本上 vi vim 共分為三種模式,分別是命令模式 command mode 輸入模式 insert mode 和底線命令模式 last line mode 這三種模式的作用分別是 命令模式 使用者剛剛啟動 vi vim,便進入了命令模式。此狀態下敲擊鍵盤動作會被vim識別為...

我教你怎麼玩轉git

我教你怎麼玩轉git 1.想要練習解決衝突?很好辦。建立本地分支,a,b,a上面,這樣改。b上面那樣改。然後你就解決衝突就可以了。可以merge 或者cheerypick 2.想要玩乙個不要歷史記錄的版本?git checkout orphan 3432423 3.怎麼玩git 呢?花一天或者半天的...

我教你怎麼玩轉git

我教你怎麼玩轉git 1.想要練習解決衝突?很好辦。建立本地分支,a,b,a上面,這樣改。b上面那樣改。然後你就解決衝突就可以了。可以merge 或者cheerypick 2.想要玩乙個不要歷史記錄的版本?git checkout orphan 3432423 3.怎麼玩git 呢?花一天或者半天的...