在 CentOS(以及一般的 Linux 系统)中,限制进程资源有多种方式,取决于你是想临时限制、长期限制,还是按用户/服务限制。下面按常见场景给你总结。
ulimit(用户级资源限制,最常用)ulimit -a
ulimit -u 100 # 最大进程数
ulimit -n 1024 # 最大文件描述符
ulimit -v 500000 # 最大虚拟内存(KB)
ulimit -t 60 # CPU 时间(秒)
编辑:
/etc/security/limits.conf
示例:
tom soft nproc 100
tom hard nproc 200
tom soft nofile 1024
tom hard nofile 2048
需要:
/etc/pam.d/login 或 sshd 中有:session required pam_limits.so
✅ 适合:限制用户能开多少进程、文件数
systemd(服务/进程级限制,推荐)CentOS 7+ 默认使用 systemd。
systemctl status nginx
编辑 service 文件:
systemctl edit nginx
示例:
[Service]
MemoryLimit=500M
CPUQuota=50%
TasksMax=100
应用:
systemctl daemon-reload
systemctl restart nginx
常用参数:
MemoryLimit:内存限制CPUQuota:CPU 百分比TasksMax:最大进程/线程数✅ 适合:限制某个服务(如 nginx、java)
cgroups(精细控制,高级)ls /sys/fs/cgroup
mkdir /sys/fs/cgroup/memory/mygroup
echo 500M > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
echo <pid> > /sys/fs/cgroup/memory/mygroup/cgroup.procs
✅ 适合:容器、批量任务、精细控制
nice / renice(CPU 优先级)nice -n 10 ./myprogram
renice -n 15 -p 1234
cpulimit(限制 CPU 使用率)yum install cpulimit
cpulimit -p 1234 --limit=30
✅ 适合:临时限制某个进程 CPU
nproc 限制用户进程数(PAM)/etc/security/limits.d/90-nproc.conf
* soft nproc 1024
root soft nproc unlimited
| 场景 | 推荐方式 |
|---|---|
| 限制用户最多能开多少进程 | limits.conf |
| 限制某个服务资源 | systemd |
| 限制容器/批量任务 | cgroups |
| 临时限制 CPU | cpulimit |
| 降低进程优先级 | nice |
如果你能告诉我:
我可以给你更精确的配置示例。