在Centos6,7使用cgroup做内存限制,使用的配置包是libcgroup,具体方案和操作步骤如下。
步骤1:安装配置管理包
Centos 6:
# yum install libcgroup
Centos 7:
# yum install libcgroup libcgroup-tools
步骤2:添加控制组
创建文件 /etc/cgconfig.d/cgroup.orange.conf,限制orange用户物理内存只使用200M,并禁用orange用户使用swap。
文件内容如下:
group orange_limitmem{
memory {
memory.limit_in_bytes=200m;
memory.memsw.limit_in_bytes=200m;
}
}
cgred服务将根据这条规则,匹配happy用户的进程。
步骤3:添加规则
在文件/etc/cgrules.conf中添加对happy用户的规则,关联步骤2的控制组:
# echo "orange memory orange_limitmem/">> /etc/cgrules.conf
步骤4:重启配置服务使之生效
Centos 6:
# service cgconfig restart
# service cgred restart
Centos 7:
# systemctl restart cgconfig.service
# systemctl restart cgred.service
其中,cgconfig服务负责资源控制组挂载;
cgred服务负责识别进程,并将进程添加到指定资源控制组。
步骤5:测试
使用orange用户,编写消耗内存脚本,观察脚本执行情况。
#!/bin/bash
x='a'
while [ True ];do
x=$x$x
done;
可以看到,进程被Kill。
注意:
centos7建议使用systemd进行资源限制。
原因可参考:
https://blog.csdn.net/lanyang123456/article/details/82319731
关于如何使用systemd进程资源限制,可以参考:
https://blog.csdn.net/lanyang123456/article/details/81610779
https://blog.csdn.net/lanyang123456/article/details/82318978