在 Debian 系统中,进程数限制(ulimit 中的 nproc)用于限制单个用户或进程可以创建的最大进程/线程数量。下面从概念、查看、修改、生效范围几个方面说明。
ulimit -u
或
ulimit -a
其中 -u 表示 max user processes。
su - 用户名
ulimit -u
cat /proc/sys/kernel/threads-max
cat /proc/sys/kernel/pid_max
nproc = 该用户可创建的最大进程数(含线程)fork: retry: Resource temporarily unavailable
或cannot fork
ulimit -u 65535
⚠️ 仅对当前会话和子进程有效,重启失效。
/etc/security/limits.conf编辑文件:
sudo vim /etc/security/limits.conf
示例(用户级):
* soft nproc 65535
* hard nproc 65535
www-data soft nproc 100000
www-data hard nproc 100000
说明:
soft:警告值hard:最大值* 表示所有用户✅ 需要重新登录或重启才能生效
limits.conf 对 systemd 服务可能不生效
sudo vim /etc/systemd/system.conf
DefaultTasksMax=infinity
或用户级:
sudo vim /etc/systemd/user.conf
sudo systemctl edit nginx
[Service]
TasksMax=100000
然后:
sudo systemctl daemon-reload
sudo systemctl restart nginx
ps -u 用户名 | wc -l
或线程数:
ps -eLf | grep 用户名 | wc -l
TasksMax 仍可能限制Docker 受宿主机 cgroup 限制:
docker run --pids-limit=10000 ...
* soft nproc 65535
* hard nproc 65535
systemd:
DefaultTasksMax=infinity
如果你愿意,可以告诉我:
我可以给你精准配置方案。