在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.maxkernel.pid_max 定义PID最大值。ulimit -u 或 /etc/security/limits.conf 控制单用户限制。threads-max 可能进一步限制线程总数。如果遇到 fork: retry: Resource temporarily unavailable 错误,通常是因为这些限制被触发了。