You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04环境下配置Nginx 1.18的worker_rlimit_nofile是否需额外变更才能生效?

Ubuntu 22.04环境下配置Nginx 1.18的worker_rlimit_nofile是否需额外变更才能生效?

嘿,针对你的场景我来详细说说——没错,只在Nginx配置里加worker_rlimit_nofile是不够的,必须同步调整系统层面的限制才能让它真正生效,毕竟你当前系统的ulimit -n只有1024,会卡住Nginx的配置上限。

先理清楚你的现状:Ubuntu 22.04上跑着Nginx 1.18,当前单进程最大文件描述符是1024,Nginx的worker_connections也设的1024,现在想把这些值翻倍对吧?

具体操作步骤

1. 调整Nginx自身配置

打开你的/etc/nginx/nginx.conf,在主配置块(和worker_processes同级的位置)添加worker_rlimit_nofile指令,同时把worker_connections同步改成目标值(比如2048),修改后配置大概是这样:

user www-data;
worker_processes auto;
# 添加这一行,设置Nginx进程能打开的最大文件描述符
worker_rlimit_nofile 2048;

events {
    worker_connections 2048; # 和上面的数值对齐
}

修改完先执行sudo nginx -t验证配置是否合法,没问题再往下走。

2. 调整Systemd层面的限制

因为Ubuntu 22.04用Systemd管理Nginx服务,系统对服务进程的文件描述符限制会覆盖用户级的ulimit设置,所以必须修改Nginx的服务配置:

  • 先创建(如果不存在)Nginx服务的 override 文件:sudo mkdir -p /etc/systemd/system/nginx.service.d,然后编辑/etc/systemd/system/nginx.service.d/override.conf
  • 在文件里添加以下内容:
[Service]
LimitNOFILE=2048
  • 重新加载Systemd配置:sudo systemctl daemon-reload
  • 重启Nginx让配置生效:sudo systemctl restart nginx

3. 可选:调整用户级全局限制(非必须但更彻底)

如果想让www-data用户的默认文件描述符限制也提升,可以编辑/etc/security/limits.conf,添加两行:

www-data soft nofile 2048
www-data hard nofile 2048

不过这一步对Systemd管理的Nginx服务来说不是强制的,因为我们已经在服务配置里指定了LimitNOFILE,但如果有其他依赖www-data用户的进程,这个设置会有用。

验证是否生效

重启Nginx后,你可以通过以下方式确认:

  • 找到Nginx的worker进程ID:ps aux | grep nginx,找那些标注为nginx: worker process的PID
  • 查看该进程的实际文件描述符限制:cat /proc/<你的worker进程PID>/limits | grep "Max open files",如果显示的是2048就说明生效了。

补充你提到的文档要点

你可能还需要调整进程能打开的最大文件描述符数(worker_rlimit_nofile),使其与worker_connections的数量对齐。注意rlimit_nofile是系统设置,因此请检查你的Linux发行版的用户限制,因为这些限制可能更严格。

这段内容说得很准确——Nginx的worker_rlimit_nofile是用来声明自己需要的文件描述符上限,但系统本身的限制如果更低,这个配置就会被系统挡住,所以必须两边同步调整才行。

备注:内容来源于stack exchange,提问作者PeraMika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:24:39