在 Debian(以及大多数 Linux 发行版)中,ulimit 可以用来限制单个用户或进程所能使用的系统资源,其中和你提到的“进程数限制”最相关的是:
-u(max user processes)ulimit -u
表示:同一个用户最多能同时创建多少个进程(包括线程)。
fork: retry: Resource temporarily unavailable
或
cannot fork
查看当前限制:
ulimit -u
临时修改(仅当前 shell 及子进程):
ulimit -u 4096
-n(open files)虽然不是进程数,但进程过多时常伴随:
ulimit -n
文件描述符耗尽也会导致无法创建新进程。
ulimit -u 8192
/etc/security/limits.confsudo vim /etc/security/limits.conf
示例:
* soft nproc 4096
* hard nproc 8192
或指定用户:
www-data soft nproc 2048
www-data hard nproc 4096
参数说明:
soft:软限制(可超过,但会警告)hard:硬限制(不能超过)nproc:就是 ulimit -u⚠ 注意:
需要 pam_limits.so 支持(默认 Debian 桌面/服务器都有):
grep pam_limits /etc/pam.d/common-session
Debian 8+ 使用 systemd,很多服务不受 limits.conf 影响。
systemctl show nginx | grep TasksMax
[Service]
LimitNPROC=4096
或者:
[Service]
TasksMax=4096
然后:
systemctl daemon-reload
systemctl restart nginx
ps -u $USER | wc -l
ps -e | wc -l
cat /proc/<pid>/limits | grep "Max processes"
在 Linux 中:
nproc 同时限制线程数| 项目 | 命令 / 文件 |
|---|---|
| 查看进程数限制 | ulimit -u |
| 临时修改 | ulimit -u 4096 |
| 永久用户限制 | /etc/security/limits.conf |
| systemd 服务 | TasksMax / LimitNPROC |
| 查看进程数 | `ps -u 用户 |
如果你愿意,可以告诉我:
我可以给你更精确的建议。