在 Debian 系统中,ulimit(用户资源限制)可以在多个地方配置,具体取决于你是想临时生效、用户级生效还是系统/服务级生效。下面按常见场景说明。
ulimit -n 65535
只对当前 shell 及其子进程有效,重启或新开终端失效。
查看当前限制:
ulimit -a
/etc/security/limits.conf这是最常用的配置位置。
示例:
* soft nofile 65535
* hard nofile 65535
www-data soft nproc 4096
www-data hard nproc 4096
字段说明:
<用户/组> <soft/hard> <资源类型> <值>
常见资源类型:
nofile:打开文件数nproc:进程数stack:栈大小memlock:锁内存⚠️ 注意:
/etc/security/limits.d/*.confDebian 推荐把配置放这里,便于管理:
/etc/security/limits.d/99-custom.conf
内容和 limits.conf 一样,优先级更高。
确保登录时会加载 limits:
检查:
grep pam_limits /etc/pam.d/common-session
grep pam_limits /etc/pam.d/common-session-noninteractive
应有类似:
session required pam_limits.so
如果没有,手动加上。
如果是 systemd 启动的服务(如 nginx、mysql),limits.conf 不会生效。
systemctl edit nginx
添加:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
systemctl daemon-reload
systemctl restart nginx
查看:
systemctl show nginx | grep Limit
编辑:
/etc/systemd/system.conf
例如:
DefaultLimitNOFILE=65535
然后重启系统或:
systemctl daemon-reexec
ulimit 需要在宿主机或 docker 启动参数中设置:
docker run --ulimit nofile=65535:65535 ...
或在 docker-compose.yml:
ulimits:
nofile:
soft: 65535
hard: 65535
systemctllimits.confulimit 命令如果你能告诉我:
我可以给你精确到文件的配置示例。