在 Debian(以及大多数 Linux 发行版)里,默认 ulimit 比较小,主要是出于历史原因、安全策略和保守默认值的考虑。下面分点说明“为什么小”以及“是不是真的小”。
ulimit 限制的是单个进程能使用的资源,例如:
nofile)nproc)Debian 默认常见值(非 root、交互 shell):
ulimit -n # 通常 1024
ulimit -u # 通常 1024 或更高
nproc,防止 fork bombDebian 的设计哲学是:
稳定 > 性能 > 方便
所以不会为了“可能用得到”就给很大值。
以下场景会明显不够:
但对:
1024 完全够用
优先级(从高到低):
/etc/security/limits.confpam_limits.so)⚠️ 注意:
limits.confnofile = 1024 来自老内核/glibc 限制select() 早期只支持 ≤1024 fdepoll 出现了,但默认值没改ulimit -n 65535
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
[Service]
LimitNOFILE=65535
Debian 的 ulimit “小”,不是 bug,而是为稳定性和安全性服务的保守默认值;
现代服务需要更大限制,但必须显式配置,而不是依赖系统默认。
如果你愿意,我可以:
too many open files)