怎么在Linux利用Ulimit调整硬限制防止进程耗尽资源

梦静君_2003

梦静君_2003

2026-04-02

914人浏览

原创

普通用户无法提升ulimit -h硬限制,仅root或cap_sys_resource进程可调高;需通过/etc/security/limits.conf(登录会话)、systemd limitnofile(服务)、docker --ulimit(容器)等分场景配置。

怎么在linux利用ulimit调整硬限制防止进程耗尽资源

ulimit -H 参数改不了?先确认你有没有权限

普通用户无法提升硬限制(hard limit),ulimit -H 只能降低或维持当前值,不能越过系统级上限。真正能调高硬限制的,只有 root 或具备 CAP_SYS_RESOURCE 能力的进程。

常见错误现象:ulimit -Hn 65536 执行后没报错,但再查仍是旧值;或者直接提示 Operation not permitted。

  • 检查当前硬限制:运行 ulimit -Hn
  • 确认是否为 root:非 root 用户想提上限,必须让管理员提前在 /etc/security/limits.conf 或 /etc/security/limits.d/*.conf 里配好 * soft nofile 65536 和 * hard nofile 65536
  • 注意 PAM 加载顺序:确保 pam_limits.so 已在 /etc/pam.d/common-session(Debian/Ubuntu)或 /etc/pam.d/login(RHEL/CentOS)中启用

limits.conf 里写 * 还是用户名?作用范围别搞混

* 匹配的是“登录用户”,不是所有进程;systemd 服务、cron 任务、SSH 非登录 shell 默认不读取 limits.conf —— 它们走的是不同加载路径。

使用场景:Web 服务器(如 Nginx)、数据库(如 MySQL)常因打开文件数不足报 Too many open files,这类问题必须按实际运行用户配,而不是笼统用 *。

  • 对交互式登录有效:比如 john soft nofile 65536 对用户 john 的 bash 会话生效
  • 对 systemd 服务无效:需单独在 service 文件里加 LimitNOFILE=65536
  • 对 Docker 容器无效:容器内 ulimit 受 --ulimit 或 daemon.json 限制,宿主机 limits.conf 不透传
  • 注意语法细节:每行只能一个参数,nofile 后面跟两个数字(soft hard),不能写成 nofile = 65536:65536

ulimit -n 改完立刻生效?别忘了子进程继承规则

ulimit -n 只影响当前 shell 及其后续 fork 出的子进程,不会 retroactively 修改已存在的进程,也不能穿透 execve 的资源重置逻辑。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载

性能影响:设太高不一定好。Linux 内核为每个打开文件维护 struct file,过多 fd 会增加 slab 分配压力和 close() 系统调用开销;某些老版本 glibc 在遍历 fd 表时还有 O(n) 行为。

  • 临时调试可用:ulimit -Sn 65536; ulimit -Hn 65536; ./myserver
  • 不要在脚本开头写 ulimit -n 1048576 就以为万事大吉 —— 如果脚本里又 exec 了别的程序,它可能重置为默认值
  • 验证是否生效:启动后进进程 namespace,查 /proc/<pid>/limits</pid> 中 Max open files 行,比看 ulimit -n 更可靠

systemd 服务 ulimit 不生效?得动 service 单元文件

systemd 忽略 /etc/security/limits.conf,它用自己的资源控制体系。哪怕你在 limits.conf 里配了 root 的 hard nofile,nginx.service 依然可能卡在 1024。

兼容性影响:RHEL 7+、Ubuntu 16.04+ 默认用 systemd,老教程教改 limits.conf 对服务基本没用。

  • 编辑 service 文件:sudo systemctl edit nginx.service
  • 写入:
    [Service]
    LimitNOFILE=65536
    
  • 重载并重启:sudo systemctl daemon-reload && sudo systemctl restart nginx
  • 注意:如果服务用了 RuntimeDirectoryMode=0755 类似配置,也要同步检查 LimitCORE、LimitAS 是否需要调整,避免被其他限制间接触发 OOM

硬限制这事,本质是层层拦截:内核有 fs.nr_open 全局上限,systemd 有 per-unit 限制,PAM 有登录会话限制,应用自己还可能调 setrlimit() 锁死。漏掉任何一层,都可能在某个深夜收到 “Too many open files” 告警。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2832

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

956

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

849

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2576

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4772

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习