在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
