Linux进程资源限制配置指南

一 概览与适用场景
二 快速上手 ulimit 与 limits.conf
ulimit -aulimit -n 65535(打开文件数)、ulimit -u 4096(用户进程数)<domain> <type> <item> <value>*softnofile65535*hardnofile131070nginxsoftnofile65535nginxhardnofile65535/etc/pam.d/common-session、/etc/pam.d/login、/etc/pam.d/sshd 中包含 session required pam_limits.so[Service] 中设置:LimitNOFILE=65535、LimitNPROC=4096 等systemctl daemon-reload && systemctl restart <service>ulimit -a 或 cat /proc/<PID>/limits三 使用 cgroups 进行硬限制 CPU 与内存
mount | grep cgroup,确认 cpu、memory 等子系统已挂载(以下示例为 cgroups v1)sudo mkdir -p /sys/fs/cgroup/memory/myappecho 104857600 | sudo tee /sys/fs/cgroup/memory/myapp/memory.limit_in_bytesyour_cmd &echo $! | sudo tee /sys/fs/cgroup/memory/myapp/tasks# 监控cat /sys/fs/cgroup/memory/myapp/memory.usage_in_bytessudo mkdir -p /sys/fs/cgroup/cpu/myappecho 100000 | sudo tee /sys/fs/cgroup/cpu/myapp/cpu.cfs_period_usecho50000 | sudo tee /sys/fs/cgroup/cpu/myapp/cpu.cfs_quota_usecho $! | sudo tee /sys/fs/cgroup/cpu/myapp/tasks# 监控cat /sys/fs/cgroup/cpu/myapp/cpu.statsystemd-run --scope -p MemoryLimit=100M -p CPUQuota=50% your_command四 常用命令与验证
ulimit -a、ulimit -n/ulimit -Hn(软/硬)、ulimit -ucat /proc/<PID>/limitscat /proc/sys/fs/file-max、cat /proc/sys/fs/nr_opencat /sys/fs/cgroup/memory/<group>/memory.usage_in_bytescat /sys/fs/cgroup/cpu/<group>/cpu.statnice -n 10 your_cmdrenice -n 10 -p <PID>五 配置要点与排错清单
Limit* 为准,需 daemon-reload 与重启session required pam_limits.soulimit -a、/proc/<PID>/limitsmemory.usage_in_bytes、cpu.stat/proc/sys/fs/file-nr、/proc/sys/fs/file-max