温馨提示×

debian ulimit进程数限制

小樊
33
2026-09-16 02:56:44
栏目: 智能运维

在 Debian 系统中,进程数限制(ulimit 中的 nproc)用于限制单个用户或进程可以创建的最大进程/线程数量。下面从概念、查看、修改、生效范围几个方面说明。


一、查看当前进程数限制

1. 查看当前 shell 的限制

ulimit -u

ulimit -a

其中 -u 表示 max user processes。

2. 查看某用户的限制

su - 用户名
ulimit -u

3. 查看系统级限制

cat /proc/sys/kernel/threads-max
cat /proc/sys/kernel/pid_max

二、ulimit 中 nproc 的含义

  • nproc = 该用户可创建的最大进程数(含线程)
  • 限制的是 用户级别,不是单个进程
  • 超过限制会报错:
    fork: retry: Resource temporarily unavailable
    
    cannot fork
    

三、修改进程数限制(临时)

当前 shell 临时生效

ulimit -u 65535

⚠️ 仅对当前会话和子进程有效,重启失效。


四、永久修改(推荐方式)

1. 通过 /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:最大值
  • * 表示所有用户

需要重新登录或重启才能生效


2. systemd 系统(Debian 8+ 重点)

limits.conf 对 systemd 服务可能不生效

修改用户级 systemd 限制

sudo vim /etc/systemd/system.conf
DefaultTasksMax=infinity

或用户级:

sudo vim /etc/systemd/user.conf

针对某个 service

sudo systemctl edit nginx
[Service]
TasksMax=100000

然后:

sudo systemctl daemon-reload
sudo systemctl restart nginx

五、查看某用户当前进程数

ps -u 用户名 | wc -l

或线程数:

ps -eLf | grep 用户名 | wc -l

六、常见问题

1. root 用户不受 nproc 限制?

  • root 默认不受 limits.conf 中 nproc 限制
  • 但 systemd 的 TasksMax 仍可能限制

2. Docker 容器中的限制

Docker 受宿主机 cgroup 限制:

docker run --pids-limit=10000 ...

七、推荐配置(一般服务器)

* soft nproc 65535
* hard nproc 65535

systemd:

DefaultTasksMax=infinity

如果你愿意,可以告诉我:

  • Debian 版本(如 10 / 11 / 12)
  • 使用场景(Web / 数据库 / Docker)
  • 报错信息

我可以给你精准配置方案

0