Linux系统中进程数量的限制主要受以下几个因素控制:
pid_max:
系统全局最大进程ID数(包括线程),由内核参数kernel.pid_max
控制(默认值通常为32768)。
bash
# 查看当前值
cat /proc/sys/kernel/pid_max
# 临时修改(重启失效)
echo 65535 > /proc/sys/kernel/pid_max
# 永久修改
sysctl -w kernel.pid_max=65535
threads-max:
系统最大线程数,由kernel.threads-max
控制(默认值 ≈ 总内存页数/4)。
bash
cat /proc/sys/kernel/threads-max
ulimit -u
或配置文件/etc/security/limits.conf
设置。
bash
# 查看当前用户限制
ulimit -u
# 修改所有用户限制(需root)
echo "* soft nproc 4096" >> /etc/security/limits.conf
pids
子系统限制进程组内的进程数(容器场景常用)。
bash
# 查看容器的进程限制(示例)
cat /sys/fs/cgroup/pids/<cgroup_path>/pids.max
vm.max_map_count
(影响线程创建)、kernel.threads-max
等。# 查看系统总进程数
ps -eLf | wc -l # 包含线程
pgrep -a -c . # 仅统计进程
# 查看各用户的进程数
ps -eLo user | sort | uniq -c
pid_max
:/etc/security/limits.conf
防止单个用户耗尽资源。⚠️ 注意:修改系统级参数需评估硬件资源,避免因过度分配导致系统不稳定。