我想弄清楚如何限制mongo守护进程的内存使用到4G。
我想使用limits.conf与memlock,但我不知道这是正确的方法来做到这一点。
从limits.conf手册页我已经了解,ulimits是指用户,而不是过程,而且“memlock”的定义是不清楚的:
memlock maximum locked-in-memory address space (KB)
我怎样才能限制进程的内存使用?
MongoDB为所有存储使用内存映射文件,似乎可以限制这些文件的大小:
但是,如果您担心上面显示的大内存数量,它们与Mongo的物理内存使用量并不完全一致。 部分内存将被映射到磁盘,具体取决于您的iocaching设置,请参阅检查内存使用情况(MongoDB) 。
memlock限制用户使用不能被换出的页面,例如巨大的页面。 这不是你在找什么。
您不希望使用ulimit -v因为在MongoDB中,VSS将包含整个数据集。 你可以尝试ulimit -m来限制RSS,但是这对Linux 2.6和更新版本不起作用。 即使这样做,当程序尝试分配内存失败时,达到极限可能会导致奇怪的行为。
更好的方法是使用cgroups 。 jlebar有这个教程 。 关于cgroups vs ulimit的两个关键是