温馨提示×

centos怎么限制进程资源

小樊
42
2026-10-09 02:52:03
栏目: 智能运维

在 CentOS(以及一般的 Linux 系统)中,限制进程资源有多种方式,取决于你是想临时限制、长期限制,还是按用户/服务限制。下面按常见场景给你总结。


一、使用 ulimit(用户级资源限制,最常用)

1. 查看当前限制

ulimit -a

2. 临时限制(只对当前 shell 及子进程生效)

ulimit -u 100        # 最大进程数
ulimit -n 1024       # 最大文件描述符
ulimit -v 500000     # 最大虚拟内存(KB)
ulimit -t 60         # CPU 时间(秒)

3. 永久限制(对某个用户)

编辑:

/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。

1. 查看某个服务的资源使用

systemctl status nginx

2. 限制服务资源

编辑 service 文件:

systemctl edit nginx

示例:

[Service]
MemoryLimit=500M
CPUQuota=50%
TasksMax=100

应用:

systemctl daemon-reload
systemctl restart nginx

常用参数:

  • MemoryLimit:内存限制
  • CPUQuota:CPU 百分比
  • TasksMax:最大进程/线程数

✅ 适合:限制某个服务(如 nginx、java)


三、使用 cgroups(精细控制,高级)

1. 查看 cgroup

ls /sys/fs/cgroup

2. 手动创建 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

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 想限制什么资源(CPU / 内存 / 进程数)
  • 是用户、服务还是某个进程

我可以给你更精确的配置示例。

0 踩