CentOS7限制用戶資源使用的三種實踐方法
一、cgroups實現(xiàn)精細(xì)資源控制
通過Control Groups(cgroups)可對用戶或進(jìn)程組進(jìn)行細(xì)粒度資源管理:
# 安裝必要組件
yum install libcgroup libcgroup-tools -y
# 創(chuàng)建內(nèi)存限制組
echo "group memory_limit {
memory {
memory.limit_in_bytes = 2G;
}
}" > /etc/cgconfig.d/memory.conf
# 應(yīng)用配置并綁定用戶
systemctl start cgconfig
cgred -g memory:memory_limit -u testuser
該配置將用戶testuser的內(nèi)存使用限制為2GB,可通過修改memory.limit_in_bytes參數(shù)調(diào)整限制值。
二、ulimit設(shè)置會話級限制
修改/etc/security/limits.conf文件實現(xiàn)基礎(chǔ)限制:
# 限制最大進(jìn)程數(shù)與文件打開數(shù)
* hard nproc 100
* hard nofile 1024
# 特定用戶CPU時間限制
john hard cpu 7200
此配置對所有用戶設(shè)置最大100進(jìn)程和1024文件句柄,用戶john的CPU時間限制為2小時。
三、磁盤配額管理方案
針對存儲資源的限制配置步驟:
# 啟用配額支持
mount -o remount,usrquota,grpquota /
quotacheck -cugm /dev/sda1
quotaon /dev/sda1
# 設(shè)置用戶磁盤配額
setquota -u mary 20480 25600 0 0 /dev/sda1
該配置為用戶mary設(shè)置20MB軟限制和25MB硬限制,適用于需要嚴(yán)格控制存儲使用的場景。
配置驗證與監(jiān)控
- 使用
cgget -g memory:memory_limit
驗證cgroups配置 - 通過
repquota -a
查看磁盤配額使用情況 - 監(jiān)控工具推薦:
top
,htop
,nmon
常見問題處理
- Q: 限制配置未生效?
- A: 檢查服務(wù)狀態(tài)
systemctl status cgconfig
,確認(rèn)用戶會話已重新登錄 - Q: 如何臨時解除限制?
- A: 使用
cgexec -g memory:unlimited ...
啟動特殊進(jìn)程