在Linux系统中,查看和配置最大进程数(包括用户级和系统级限制)可以通过以下几种方法:
系统全局的进程数限制由内核参数 kernel.pid_max
决定:
cat /proc/sys/kernel/pid_max
# 或
sysctl kernel.pid_max
32768
(32位系统)或 4194304
(64位系统),表示系统最多能创建的进程数(包括线程)。每个用户能创建的进程数受 ulimit
限制:
ulimit -u
63204
)。若显示 unlimited
表示无限制。统计当前系统中的进程数量(PID总数):
ps -eLf | wc -l # 包括线程
# 或
ps -e --no-headers | wc -l # 仅进程
线程数受内核参数 threads-max
限制:
cat /proc/sys/kernel/threads-max
pid_max * 2
。临时修改系统级限制:
echo 100000 > /proc/sys/kernel/pid_max
# 或
sysctl -w kernel.pid_max=100000
临时修改用户级限制:
ulimit -u 100000
系统级(pid_max
):
编辑 /etc/sysctl.conf
,添加以下行后执行 sysctl -p
:
kernel.pid_max = 100000
用户级(ulimit
):
编辑 /etc/security/limits.conf
,添加:
* soft nproc 100000
* hard nproc 100000
(需重新登录生效)
bash
cat /sys/fs/cgroup/pids/user.slice/pids.max
kernel.pid_max
定义PID最大值。ulimit -u
或 /etc/security/limits.conf
控制单用户限制。threads-max
可能进一步限制线程总数。如果遇到 fork: retry: Resource temporarily unavailable
错误,通常是因为这些限制被触发了。