Debian ulimit设置指南
一 基础概念与查看
ulimit -aulimit -n(文件描述符)、ulimit -u(进程数)、ulimit -f(文件大小,单位 KB)cat /proc/sys/fs/file-max、sysctl fs.file-max。二 临时调整
ulimit -n 65535ulimit -S -n 1024、ulimit -H -n 2048ulimit -u 4096ulimit -s 8192(单位 KB)ulimit -n、ulimit -u、ulimit -a。上述设置仅对当前会话与由此会话启动的子进程有效。三 永久生效的配置路径
/etc/security/limits.conf,为指定用户/组或全局设置软硬限制,例如:# 全局
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
# 指定用户
alice soft nofile 32768
alice hard nofile 65536
/etc/pam.d/common-session 与 /etc/pam.d/common-session-noninteractive 末尾添加(如不存在则新增):session required pam_limits.so
sudo -i/图形登录等“登录会话”才会应用。/etc/systemd/system.conf 与 /etc/systemd/user.conf 中设置,例如:DefaultLimitNOFILE=65535
修改后执行:sudo systemctl daemon-reload,并重启系统或重新登录会话。[Service] 段设置,例如:[Service]
LimitNOFILE=65535
LimitMEMLOCK=infinity
应用:sudo systemctl daemon-reload && sudo systemctl restart <service>。~/.bashrc、~/.profile 中加入 ulimit -n 65535 等,仅对从该 shell 启动的进程有效,常用于开发/运维个人环境。四 常见场景与示例配置
nofile 设为 65535 或更高(结合业务与系统资源评估)。LimitNOFILE=65535,确保服务进程获得更高上限。nproc 设为 4096 或更高(视并发需求与内存而定)。ulimit -c unlimited(临时);在 limits.conf 中设置 username soft core unlimited、username hard core unlimited 并重新登录。* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
* soft core unlimited
* hard core unlimited
并在需要的服务单元中补充 LimitNOFILE、LimitCORE=infinity 等。五 验证与排错
ulimit -a、ulimit -n、ulimit -u,确认软/硬限制已生效。systemctl show <service> | grep LimitNOFILEcat /proc/<PID>/limits | grep "Max open files"prctl -n | grep NOFILE(若安装了 prctl)cat /proc/sys/fs/file-max、sysctl fs.file-max,确保用户级上限不超过系统级上限。limits.conf 但未生效,多为未安装或未启用 pam_limits.so,或没有“重新登录”触发加载。sudo command 时,命令通常在 root 的会话中执行,会继承 root 的 limits;如需为特定命令使用不同上限,可在 sudoers 中配置 Defaults 或在命令前显式 ulimit 并启动子进程。--ulimit 传入,或在宿主机对容器做相应配置。top、htop、vmstat 等工具持续观测。