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

调整Nginx的worker_rlimit_nofile后是否需额外系统配置?

问题解答:Nginx提升worker_connections至2048的完整配置步骤

只修改Nginx配置中的worker_rlimit_nofile 2048和worker_connections 2048不够,必须配合系统层面的文件描述符限制调整,否则Nginx的实际连接数上限仍会被系统限制在1024。以下是完整操作说明:

核心原因

worker_rlimit_nofile是Nginx对自身worker进程的文件描述符上限设定,但这个值无法突破系统给Nginx运行用户(www-data)设定的硬限制。当前ulimit -n返回的1024是当前shell的限制,而Nginx作为系统守护进程,继承的是www-data用户的系统全局限制,必须先提升这个限制才能让Nginx的配置生效。

必须执行的系统配置修改

1. 调整用户级文件描述符限制

编辑/etc/security/limits.conf,添加以下内容:

www-data soft nofile 2048
www-data hard nofile 2048
  • soft nofile:软限制,当用户打开的文件描述符接近该值时会收到警告
  • hard nofile:硬限制,用户能打开的文件描述符绝对上限(需root权限才能修改)

2. 确保PAM模块加载生效

编辑/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive,添加一行:

session required pam_limits.so

这一步是让Ubuntu系统加载limits.conf的配置,否则用户的限制不会被应用。

3. 使配置生效

修改完上述文件后,需要重启系统(或让www-data用户重新登录),新的限制才能生效。

Nginx配置验证

重启Nginx后,执行以下步骤验证配置是否生效:

  1. 找到Nginx worker进程的PID:
ps aux | grep nginx | grep worker
  1. 查看该进程的实际文件描述符限制:
cat /proc/<worker_pid>/limits | grep "Max open files"

如果输出显示Max open files为2048,说明配置生效。

注意事项

  • 临时执行ulimit -n 2048仅对当前shell会话生效,不会影响Nginx守护进程,因此不需要执行这个命令。
  • 如果后续需要更高的连接数(比如4096),只需同步修改worker_rlimit_nofile、worker_connections以及limits.conf中的对应值即可。

内容的提问来源于stack exchange,提问作者PeraMika

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:09:49