在 Debian 系统中,文件数限制(open files / file descriptors)通常由 ulimit 和系统级配置共同控制。下面从查看、临时修改、永久修改、系统级限制几个方面说明。
ulimit -n
显示的是当前用户可打开的最大文件数(软限制)。
查看所有限制:
ulimit -a
cat /proc/sys/fs/file-max
这是整个系统可分配的文件描述符总数。
查看当前已使用:
cat /proc/sys/fs/file-nr
ulimit -n 65536
⚠️ 注意:
查看硬限制:
ulimit -Hn
/etc/security/limits.confsudo vim /etc/security/limits.conf
示例(针对所有用户或指定用户):
* soft nofile 65536
* hard nofile 65536
或指定用户:
www-data soft nofile 65536
www-data hard nofile 65536
✅ 需要满足条件:
如果是 systemd 管理的服务(如 nginx、mysql、docker),limits.conf 可能不生效。
sudo systemctl edit nginx
添加:
[Service]
LimitNOFILE=65536
然后:
sudo systemctl daemon-reload
sudo systemctl restart nginx
sudo vim /etc/systemd/system.conf
DefaultLimitNOFILE=65536
sudo vim /etc/sysctl.conf
fs.file-max = 2097152
生效:
sudo sysctl -p
cat /proc/<pid>/limits
Docker 默认继承宿主机,但可显式设置:
ulimits:
nofile:
soft: 65536
hard: 65536
# /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
# /etc/systemd/system.conf
DefaultLimitNOFILE=65536
# /etc/sysctl.conf
fs.file-max = 2097152
如果你能说明:
我可以给你更精确的配置方案。