在 Debian 中,“永久设置 ulimit”通常取决于你想对谁生效:
下面按常见场景说明。
/etc/security/limits.conf编辑文件:
sudo nano /etc/security/limits.conf
示例(对用户 appuser):
appuser soft nofile 65535
appuser hard nofile 65535
appuser soft nproc 4096
appuser hard nproc 4096
含义:
soft:软限制(可临时超过,但会警告)hard:硬限制(不能超过)nofile:打开文件数nproc:进程数检查以下文件是否包含(一般默认有):
/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
应有:
session required pam_limits.so
su - appuser
ulimit -a
@appgroup soft nofile 65535
@appgroup hard nofile 65535
⚠️ limits.conf 对 systemd 服务不生效
sudo systemctl edit myservice
添加:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
sudo systemctl daemon-reload
sudo systemctl restart myservice
sudo nano /etc/systemd/system.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096
修改后重启系统生效。
ulimit -n 65535
| 问题 | 原因 |
|---|---|
| 改了 limits.conf 不生效 | 用的是 systemd 服务 |
| docker 中不生效 | 需在 docker run 加 --ulimit |
| 重启后失效 | 只用了 ulimit 命令 |
如果你能说明:
nofile / nproc / core 等我可以给你精确配置文件示例。