如何限制单个Linux进程的内存使用,而不是终止该进程。
我知道ulimit可以限制内存使用,但是如果超过限制,将终止该进程。
是否有任何其他命令或外壳程序可以限制内存使用并且不会终止进程?
除了setrlimit之外,另一种方法 可以使用ulimit实用程序进行设置:
$ ulimit -Sv 500000#设置〜500 mb限制
使用Linux的控制组,因为它限制了进程(或进程组)对物理内存的分配,这与虚拟内存有明显的区别。例如:
$ cgcreate -g memory:/ myGroup
$ echo $(((500 * 1024 * 1024))> /sys/fs/cgroup/memory/myGroup/memory.limit_in_bytes
$ echo $(((5000 * 1024 * 1024))> / sys /fs/cgroup/memory/myGroupmemory.memsw.limit_in_bytes
将创建一个名为“ myGroup”的控制组,限制在myGroup下运行的进程集的最大500 MB物理内存和最大5000 MB的交换空间。要在控制组下运行流程:
$ cgexec -g memory:myGroup命令
注意:据我所知,尽管使用cgroups可以限制物理内存,但setrlimit将限制虚拟内存。
归档时间: |
|
查看次数: |
10740 次 |
最近记录: |