我有一个长时间运行的脚本,它在一个具有8GB内存的Linux机器上启动几个子进程。经过几个小时的运行,它占用了将近90%的内存,这使得其他服务(如SSH )在启动磁盘交换时没有响应能力。
以编程方式限制我的脚本和所有子进程的总体内存使用,而不单独为每个进程设置特定的内存限制的最佳方法是什么?不同的子进程可以使用非常不同数量的内存,因此设置固定阈值是非常低效的。
理想情况下,我只想简单地指定“只消耗75%的内存”,并让系统根据需要将其划分给子程序,以确保我仍然可以在任何给定的时间将SSH放入机器中。我首先尝试设置一个cron作业,以自动将sshd重命名为最高优先级,但这没有任何效果,而且我通常无法使用SSH,或者SSH提示符太慢了。
发布于 2014-04-08 16:00:33
以专用用户的身份运行流程,并通过C组进行设置:
/etc/cgconfig.conf:
group limitedram {
memory {
memory.limit_in_bytes = 6442450944;
}
}和/etc/cgrules.conf:
serviceuser memory limitedram/这将serviceuser的内存使用量限制在6GB以内。
https://serverfault.com/questions/587522
复制相似问题