Heim > Datenbank > MySQL-Tutorial > 限制MongoDB使用内存大小

限制MongoDB使用内存大小

WBOY
Freigeben: 2016-06-07 17:08:08
Original
1221 Leute haben es durchsucht

因为MongoDB的内存是系统的虚拟内存管理的,MongoDB并不干涉内存管理工作,这样虽然可以简化Mongo的工作,但同时Mongo的内存使用

因为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 ,也同时进行1000W的数据插入. 我们来看下效果。

    1000端口的为限制虚拟 地址空间的,2000端口是没有限制的。 效果很明显! 

    linux

    Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage