如何限制单个Linux进程的内存使用而不杀死该进程

2024-02-20

如何限制单个 Linux 进程的内存使用而不杀死该进程。

我知道 ulimit 可以限制内存使用,但如果超过限制,将会杀死进程。

是否有其他命令或 shell 可以限制内存使用而不杀死进程?


除此之外还有另一种方式设置限制 http://man7.org/linux/man-pages/man2/setrlimit.2.html,可以使用 ulimit 实用程序进行设置:

$ ulimit -Sv 500000 # 设置 ~500 mb 限制

是使用Linux 控制组 http://en.wikipedia.org/wiki/Cgroups,因为它限制了一个进程(或一组进程)的物理内存分配,与虚拟内存截然不同。例如:

$ cgcreate -g 内存:/myGroup
$ echo $(( 500 * 1024 * 1024 )) > /sys/fs/cgroup/内存/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 内存:myGroup 命令

Note:据我所知, setrlimit 将限制虚拟内存,尽管使用 cgroups 可以限制物理内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何限制单个Linux进程的内存使用而不杀死该进程 的相关文章

随机推荐