CentOS7限制用户资源使用的三种实践方法
一、cgroups实现精细资源控制
通过Control Groups(cgroups)可对用户或进程组进行细粒度资源管理:
# 安装必要组件
yum install libcgroup libcgroup-tools -y
# 创建内存限制组
echo "group memory_limit {
memory {
memory.limit_in_bytes = 2G;
}
}" > /etc/cgconfig.d/memory.conf
# 应用配置并绑定用户
systemctl start cgconfig
cgred -g memory:memory_limit -u testuser
该配置将用户testuser的内存使用限制为2GB,可通过修改memory.limit_in_bytes参数调整限制值。
二、ulimit设置会话级限制
修改/etc/security/limits.conf文件实现基础限制:
# 限制最大进程数与文件打开数
* hard nproc 100
* hard nofile 1024
# 特定用户CPU时间限制
john hard cpu 7200
此配置对所有用户设置最大100进程和1024文件句柄,用户john的CPU时间限制为2小时。
三、磁盘配额管理方案
针对存储资源的限制配置步骤:
# 启用配额支持
mount -o remount,usrquota,grpquota /
quotacheck -cugm /dev/sda1
quotaon /dev/sda1
# 设置用户磁盘配额
setquota -u mary 20480 25600 0 0 /dev/sda1
该配置为用户mary设置20MB软限制和25MB硬限制,适用于需要严格控制存储使用的场景。
配置验证与监控
- 使用
cgget -g memory:memory_limit
验证cgroups配置 - 通过
repquota -a
查看磁盘配额使用情况 - 监控工具推荐:
top
,htop
,nmon
常见问题处理
- Q: 限制配置未生效?
- A: 检查服务状态
systemctl status cgconfig
,确认用户会话已重新登录 - Q: 如何临时解除限制?
- A: 使用
cgexec -g memory:unlimited ...
启动特殊进程