温馨提示×

debian ulimit进程数怎么设

小樊
47
2026-09-03 20:22:14
栏目: 智能运维

在 Debian 里,“进程数限制”通常指 用户级最大进程数(nproc),也可能涉及 系统级总进程数systemd 服务级限制。下面按常见场景说明。


一、查看当前限制

ulimit -u        # 当前 shell 的用户最大进程数
ulimit -a        # 查看所有限制
cat /proc/sys/kernel/pid_max   # 系统最大 PID(总进程数上限)

二、临时设置(仅当前 shell 生效)

ulimit -u 65535

⚠️ 只对当前登录 session 有效,重启或新登录失效。


三、永久设置用户进程数(推荐方式)

1️⃣ 使用 /etc/security/limits.conf

sudo vim /etc/security/limits.conf

示例(给用户 www 或所有用户):

*           soft    nproc   65535
*           hard    nproc   65535
www         soft    nproc   65535
www         hard    nproc   65535

参数说明:

  • soft:软限制(可超过,但会警告)
  • hard:硬限制(不可超过)
  • nproc:最大进程数

需要重新登录才生效


2️⃣ 确认 PAM 已启用

确保以下文件包含:

grep pam_limits /etc/pam.d/common-session

应有:

session required pam_limits.so

如果没有:

sudo pam-auth-update

四、systemd 服务单独设置(非常重要)

如果你是 systemd 启动的服务(如 nginx、java、docker),
limits.conf 可能不会生效

方法 1:服务文件里设置

sudo systemctl edit nginx

写入:

[Service]
LimitNPROC=65535

然后:

sudo systemctl daemon-reload
sudo systemctl restart nginx

查看:

systemctl show nginx | grep LimitNPROC

五、系统级最大进程数(PID 上限)

# 查看
cat /proc/sys/kernel/pid_max

# 临时
sudo sysctl -w kernel.pid_max=1000000

# 永久
sudo vim /etc/sysctl.conf
kernel.pid_max=1000000
sudo sysctl -p

六、常见坑总结

limits.conf 对 systemd 服务无效
❌ 修改后不重新登录 / 不重启服务
❌ Docker 容器内还需在宿主机或服务里设


七、快速自查清单

  • [ ] ulimit -u 查看
  • [ ] limits.conf 设置
  • [ ] systemd 服务 LimitNPROC
  • [ ] kernel.pid_max

如果你能告诉我:

  • 普通用户 / 服务 / Docker
  • 遇到的是什么报错(如 fork: retry

我可以给你更精确的配置示例。

0