linux资源限制通过/etc/security/limits.conf由pam pam_limits.so在登录时生效,需确保pam启用、重新登录,并注意systemd和容器需单独配置;推荐用“user - nofile 65535”同时设软硬限。

Linux系统资源限制主要靠 /etc/security/limits.conf 实现,它不是内核配置,而是由 PAM 模块 pam_limits.so 在用户登录时加载生效的。配置写对了,但没登录新会话、没启用 PAM 或被 systemd 绕过,都会导致不生效。
limits.conf 的基本格式和含义
每行遵循四字段结构:domain type item value
-
domain:作用对象,可以是用户名(如
www-data)、组名(如@devs),或通配符*表示所有普通用户(不包括 root) -
type:限制类型,
soft是当前生效值,hard是上限,-表示同时设置软硬限制 -
item:资源类型,最常用的是
nofile(文件描述符数)、nproc(最大进程/线程数),其他还有stack、as、memlock等 -
value:数值,支持整数或
unlimited(慎用)
为什么 soft 和 hard 要配对设置
soft 限制不能高于 hard 限制,且普通用户只能调高 soft 值(到 hard 范围内),不能动 hard 值。root 用户可修改两者。若只设 soft 不设 hard,后续 ulimit -Hn 查看可能显示默认低值(如 4096),导致服务启动时因硬限不足失败。
后台主要功能如下:1) 系统管理:管理员管理,网站配置,上传文件管理,QQ-MSN 在线客服设置。2) 企业信息:后台自由添加修改企业的各类信息及介绍。3) 产品管理:产品类别新增修改管理,产品添加修改以及产品的审核。4) 调查管理:发布修改新调查。5) 会员管理:查看修改删除会员资料,及锁定解锁功能。可在线给会员发信!6) 新闻管理:能分大类和小类新闻,不再受新闻栏目的限制。7) 留言管理:管理
- 推荐写法:
www-data - nofile 65535(一行搞定软硬) - 避免只写:
www-data soft nofile 65535(hard 仍为系统默认,可能卡住服务) - root 用户不受
*规则影响,如需限制 root,必须显式写root - nofile 65535
配置生效的前提条件
limits.conf 不是改完就生效的配置文件,它依赖完整的 PAM 流程:
- 确认
/etc/pam.d/login、/etc/pam.d/sshd等登录服务中包含session required pam_limits.so - 修改后必须退出当前会话并重新登录(SSH 重连、图形界面注销再进),
su - user也有效,但su user不加载新 limits - systemd 服务(如 nginx、redis)默认不读取 limits.conf,需单独在
/etc/systemd/system/*.service.d/override.conf中设LimitNOFILE=65535 - 容器环境(如 Docker)需用
--ulimit nofile=65535:65535显式传递,宿主机 limits.conf 对容器内进程无效
常见陷阱与验证方法
配置看似正确却无效,多数出在验证方式或层级覆盖上:
- 用
ulimit -n查看当前 shell 的 nofile 值,用ulimit -Hn和ulimit -Sn分别确认硬软限制是否一致 - 不要只查 root 或当前终端,要切换目标用户验证:
sudo -u www-data bash -c 'ulimit -n' - systemd 服务要用
systemctl show -p LimitNOFILE nginx.service查,不是ulimit - 注意
/etc/security/limits.d/*.conf下的文件按字母序加载,后加载的会覆盖前面同 domain+item 的设置 - 某些发行版(如新版 Ubuntu)默认禁用 PAM limits,需检查
/etc/pam.d/common-session是否含pam_limits.so









