You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 22.04环境下配置Nginx worker_rlimit_nofile后是否需额外操作使其生效?

Ubuntu 22.04环境下配置Nginx worker_rlimit_nofile后是否需额外操作使其生效?

嗨,针对你在Ubuntu 22.04上优化Nginx文件描述符的问题,咱们一步步梳理清楚该怎么做:

首先明确你的当前场景:服务器ulimit -n返回1024,Nginx配置里worker_connections设为1024,现在想要把这些数值翻倍的话,确实需要调整worker_rlimit_nofile,但光改Nginx配置还不够,得配合系统层面的限制调整才能完全生效。

第一步:修改Nginx配置

打开你的/etc/nginx/nginx.conf,在全局配置区域(比如events块之前)添加一行:

worker_rlimit_nofile 2048;

这里的2048是对应翻倍需求的数值,它会指定Nginx每个worker进程能打开的最大文件描述符数。

改完后先验证配置语法是否正确:

sudo nginx -t

如果提示test is successful,就可以重启Nginx让配置生效:

sudo systemctl restart nginx

第二步:调整系统级文件描述符限制

ulimit -n显示的是用户级别的软限制,默认Ubuntu的软限制是1024,这个限制会约束Nginx进程的实际可用值,所以必须同步调整:

  1. 修改/etc/security/limits.conf,添加以下两行(针对Nginx运行的www-data用户):
www-data soft nofile 2048
www-data hard nofile 4096

这里soft是警告阈值,达到数值会触发警告;hard是绝对上限,进程无法超过这个值,你可以根据实际需求调整。

  1. 因为Ubuntu用systemd管理服务,还要修改systemd的全局配置,打开/etc/systemd/system.conf,添加或修改:
DefaultLimitNOFILE=2048:4096

改完后重新加载systemd配置:

sudo systemctl daemon-reload

然后再次重启Nginx,确保所有配置都生效。

第三步:验证配置是否生效

你可以通过以下方式确认:

  • 找到Nginx worker进程的PID:ps aux | grep nginx,定位到worker进程的ID
  • 查看该进程的文件描述符限制:cat /proc/<你的worker进程PID>/limits,在输出里找到Max open files,确认数值是不是你设置的2048

另外,你之前看到的文档提示也很关键:

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

简单来说,只改Nginx的worker_rlimit_nofile是不够的,必须同步调整系统的用户限制和systemd配置,否则Nginx可能无法达到你想要的文件描述符上限。

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

火山引擎 最新活动