限制MongoDB使用內存大小

限制MongoDB使用內存大小


因爲MongoDB的內存是系統的虛擬內存管理的,MongoDB並不干涉內存管理工作,這樣雖然可以簡化Mongo的工作,但同時Mongo的內存使用是沒法控制的。
真的沒法控制?辦法是有的,可以通過ulimit 來控制用戶進程的虛擬地址空間的大小。
ulimit 是控制着所有進程的內存大小,怎麼針對MongoDB進行控制呢? 其實可以變通的,我們在自己linux裏使用一個用戶來運行MongoDB,其它程序用其它用戶進行運行。因爲ulimit是可以限制指定用戶資源的.

通過ulimit -a來查看所有可以修改的資源

118 ~ >>ulimit -a @root
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 1024
-n: file descriptors 1024
-l: locked-in-memory size (kb) 64
-v: address space (kb) unlimited
-x: file locks unlimited
-i: pending signals 15661
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0

這裏我們修改的是ulimit -v: address space(kb) 選項 也就是用戶進程的最大虛擬地址空間。
我們新建個用戶cb,在啓動mongod之前
ulimit -v 1000000 修改最大虛擬地址空間爲1G
然後運行mongod 端口爲10000,並執行1000W的數據插入腳本。
再使用root用戶,不對ulimit進行任何修改,開起另外一個mongod 端口爲20000 ,也同時進

1000端口的爲限制虛擬 地址空間的,2000端口是沒有限制的。 效果很明顯!http://www.linuxso.com/linuxpeixun/14251.html
發佈了29 篇原創文章 · 獲贊 7 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章