解决“Too many open files”报错:从系统内核到 Nginx 参数的闭环调整方案

星浩同学_8819

星浩同学_8819

2026-04-23

276人浏览

原创

结论:too many open files 是系统级文件描述符四层限制未对齐所致,必须同步配置内核fs.file-max、用户limits.conf(含pam启用)、systemd limitnofile(如适用)及nginx.conf中worker_rlimit_nofile与worker_connections关系,缺一不可。

解决“too many open files”报错:从系统内核到 nginx 参数的闭环调整方案

直接说结论:Too many open files 不是 Nginx 单独的问题,而是系统级文件描述符(file descriptor, FD)层层限制没对齐导致的。只改 nginx.conf 或只跑 ulimit -n 65535 都会失效——必须完成「内核 → 用户限制 → 进程启动环境 → Nginx 配置」四层闭环。

查清当前各层 FD 限制值,别猜

错误常发生在“明明改了 limits.conf,重启 Nginx 还报错”。根本原因是:你看到的 ulimit -n 是当前 shell 的软限制,而 Nginx master 进程实际继承的是其启动用户的 limits,worker 进程又可能受 worker_rlimit_nofile 约束。必须逐层验证:

  • 系统全局上限:cat /proc/sys/fs/file-max(内核级,建议设为 ≥ 200000)
  • 当前用户软硬限制:ulimit -Sn 和 ulimit -Hn(注意:Nginx 若以 nginx 用户运行,就得用该用户身份执行)
  • Nginx master 进程实际限制:cat /proc/$(cat /var/run/nginx.pid)/limits | grep "Max open files"
  • Nginx worker 进程限制:ps --ppid $(cat /var/run/nginx.pid) -o %p | sed '1d' | xargs -I{} cat /proc/{}/limits | grep "Max open files"

如果 worker 进程显示仍是 1024 4096,说明前面某一层没生效,别急着调 worker_connections。

/etc/security/limits.conf 修改后不生效?重点看三件事

这是最常踩的坑。改完 /etc/security/limits.conf 却发现 ulimit -n 还是 1024,大概率卡在这三个地方:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • 没指定具体用户:用 * 是全局,但若 Nginx 以 nginx 用户运行,更稳妥写法是单独加两行:nginx soft nofile 65535 和 nginx hard nofile 65535
  • PAM 模块未启用:确认 /etc/pam.d/common-session(Debian/Ubuntu)或 /etc/pam.d/login(CentOS/RHEL)里有 session required pam_limits.so;缺这句,limits.conf 形同虚设
  • 没重新登录或没用新会话启动:修改后必须用新 shell 登录,或用 su - nginx -c 'ulimit -n' 验证;systemd 启动的 Nginx 还需检查 LimitNOFILE 是否覆盖了 limits.conf

nginx.conf 中 worker_rlimit_nofile 和 worker_connections 的关系

worker_rlimit_nofile 不是并发连接数,它是每个 worker 进程能打开的**最大文件描述符总数**,包括日志、配置文件、socket、临时文件等。而 worker_connections 是它能处理的**并发网络连接数**。两者必须满足:

  • worker_rlimit_nofile ≥ worker_connections × worker_processes + 预留余量(至少 +1024)
  • 例如:4 核机器设 worker_processes auto(即 4),worker_connections 8192,那 worker_rlimit_nofile 至少要设为 8192 × 4 + 1024 = 33792,建议直接设 65535
  • 如果 worker_rlimit_nofile 小于理论所需,Nginx 启动时不会报错,但运行中 accept() 就会失败并打日志:accept() failed (24: Too many open files)

systemd 启动 Nginx 时 limits.conf 被绕过?加 LimitNOFILE

现代 Linux 发行版多用 systemd 管理 Nginx,它默认忽略 /etc/security/limits.conf。此时必须显式设置:

  • 编辑 /etc/systemd/system/multi-user.target.wants/nginx.service 或运行 systemctl edit nginx
  • 添加如下内容:
    [Service]
    LimitNOFILE=65535
  • 然后执行:systemctl daemon-reload && systemctl restart nginx
  • 验证:用 systemctl show nginx | grep LimitNOFILE 确认值已加载;再查 worker 进程的 /proc/PID/limits 是否同步

这个环节最容易被忽略——尤其在 CentOS 8+/Ubuntu 20.04+ 环境下,不加 LimitNOFILE,前面所有 limits.conf 配置都白做。

相关专题

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

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

2023.08.15

437

5

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

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

2023.09.08

920

5

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

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

2023.09.19

2932

5

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

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

2023.10.09

976

5

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

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

2023.10.17

869

5

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

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

2023.10.17

454

3

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

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

2023.10.18

2656

4

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

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

2023.10.20

4952

4

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

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

2023.10.20

787

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习