在 Linux 中限制进程资源,常见做法有 cgroups、ulimit、systemd 资源控制、nice/CPU 亲和性、容器 等。下面按“常用程度 + 场景”系统说明。
ulimit -a
-n-u-c-m(很多系统不生效)-t# 限制最多 1024 个文件
ulimit -n 1024
# 限制最多 512 个进程
ulimit -u 512
# 限制 CPU 使用时间 60 秒
ulimit -t 60
# 禁止生成 core 文件
ulimit -c 0
⚠️ 只对当前 shell 及其子进程有效,重启失效。
[Service]
ExecStart=/usr/bin/myapp
MemoryMax=512M
CPUQuota=50%
TasksMax=200
LimitNOFILE=1024
MemoryMax:最大内存CPUQuota:CPU 百分比(如 50% = 半个核)TasksMax:最大线程/进程数LimitNOFILE:文件描述符IOWeight:磁盘 IO 权重systemctl daemon-reload
systemctl restart myapp
✅ 稳定、持久、生产推荐
mkdir /sys/fs/cgroup/cpu/mygroup
echo 50000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_quota_us
echo 100000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_period_us
echo <pid> > /sys/fs/cgroup/cpu/mygroup/tasks
mkdir /sys/fs/cgroup/mygroup
echo "50000 100000" > /sys/fs/cgroup/mygroup/cpu.max
echo <pid> > /sys/fs/cgroup/mygroup/cgroup.procs
适合:
nice -n 10 ./app
renice -n 10 -p <pid>
taskset -c 0,1 ./app
taskset -cp 0,1 <pid>
docker run \
--memory=512m \
--cpus=1.5 \
--pids-limit=200 \
myimage
✅ 最省心,底层仍是 cgroups
| 目标 | 推荐方式 |
|---|---|
| 临时限制命令 | ulimit |
| 后台服务 | systemd |
| 多进程统一限制 | cgroups |
| 降低优先级 | nice |
| 绑定 CPU | taskset |
| 隔离环境 | Docker |
如果你能说明:
我可以给你一份可直接用的配置。