在 Debian(以及大多数 Linux 发行版)中,**文件数限制(open files / file descriptors)**并不是固定一个“最大值”,而是由多个层级决定的。下面按常见情况说明:
ulimit -n
或ulimit -Sn
ulimit -Hn
普通用户可以把 soft limit 提高到 hard limit,但不能超过 hard limit。
不是 per-user,而是整个系统能打开的文件描述符总数:
cat /proc/sys/fs/file-max
常见服务器可能是:
临时修改:
sysctl -w fs.file-max=1000000
永久修改(/etc/sysctl.conf):
fs.file-max=1000000
如果你用的是 systemd 服务(如 Nginx、MySQL),ulimit 可能不生效,需要:
[Service]
LimitNOFILE=65535
然后:
systemctl daemon-reload
systemctl restart xxx
查看某进程限制:
cat /proc/<pid>/limits
| 场景 | 推荐值 |
|---|---|
| 普通用户 | 1024 |
| 开发/调试 | 65535 |
| 高并发服务 | 100000+ |
| 系统上限 | file-max ≥ 进程数 × 单进程限制 |
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
⚠ 需要重新登录或重启服务才生效。
如果你能告诉我:
我可以给你精确推荐值。