在 Debian(以及大多数 Linux 发行版)里,ulimit 的上限不是由 ulimit 本身决定的,而是由内核参数、系统资源和具体资源类型共同决定。下面分点说明。
ulimit 控制的是:
不能超过系统级(kernel / systemd)限制
ulimit -n
系统级限制:
cat /proc/sys/fs/file-max
示例(普通服务器):
file-max 可能是 几百万ulimit -n 可以设到 file-max 的量级(但通常不建议)⚠️ systemd 服务还受:
[Service]
LimitNOFILE=...
限制
ulimit -u
/etc/security/limits.confsystemd 的 TasksMax 限制理论上限 ≈ 内核 pid_max:
cat /proc/sys/kernel/pid_max
常见值:
ulimit -v # 虚拟内存
ulimit -m # 物理内存(很多系统忽略)
⚠️ -v 设太大可能直接无法起进程
ulimit -s
ulimit -c
unlimited 是允许的进程 ulimit
↓
limits.conf / systemd
↓
kernel 参数
/etc/security/limits.conf* soft nofile 1000000
* hard nofile 1000000
⚠️ 仅对:
❌ 对 systemd 服务不生效
[Service]
LimitNOFILE=infinity
LimitNPROC=infinity
或:
systemctl edit xxx.service
sysctl -w fs.file-max=10000000
sysctl -w kernel.pid_max=4194303
Debian 上 ulimit 能改多大,取决于:
- 你有没有 root
- 硬限制是多少
- systemd / kernel 是否允许
- 机器资源是否撑得住
如果你愿意,可以告诉我:
我可以直接给你可复制的配置方案。