在 Debian 里 ulimit 通常是 shell 级别的限制,要“调大”一般分三种场景。下面按最常见 → 最彻底来说明。
ulimit -n 65535 # 打开文件数
ulimit -u 65535 # 最大进程/线程数
ulimit -s 8192 # 栈大小(KB)
ulimit -a # 查看当前所有限制
⚠️ 只能调小或调到不超过系统硬限制 如果报错:
ulimit: open files: cannot modify limit: Operation not permitted
说明超过 hard limit,需要下面方法。
/etc/security/limits.confsudo vim /etc/security/limits.conf
示例(对 all 用户或指定用户):
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
说明:
soft:当前限制hard:最大可设值nofile:文件描述符nproc:进程数✅ 重新登录或重启后生效
检查:
grep pam_limits /etc/pam.d/common-session
grep pam_limits /etc/pam.d/common-session-noninteractive
应有:
session required pam_limits.so
Debian 10+ 默认用 systemd,limits.conf 对服务可能无效
sudo systemctl edit nginx
写入:
[Service]
LimitNOFILE=65535
LimitNPROC=65535
然后:
sudo systemctl daemon-reload
sudo systemctl restart nginx
sudo vim /etc/systemd/system.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
sudo systemctl daemon-reexec
查看:
cat /proc/sys/fs/file-max
临时:
sudo sysctl -w fs.file-max=1000000
永久:
sudo vim /etc/sysctl.conf
fs.file-max = 1000000
sudo sysctl -p
ulimit -a
cat /proc/<pid>/limits
systemctl show <service> | grep Limit
--ulimitsu 不会重新加载 limits如果你能告诉我:
我可以给你精确配置。