Nginx万级并发需三层协同优化:内核资源(10项)、Worker调度(8项)、HTTP/TCP传输(12项),共30个关键参数环环相扣,缺一不可。
想让 Nginx 负载均衡真正扛住万级并发、低延迟转发,光配 upstream 和 weight 远远不够。关键在三层协同:Linux 内核资源底座、Nginx 进程与事件调度层、HTTP 传输与连接控制层。30 个参数不是堆砌,而是环环相扣的链路优化。
系统内核与资源限制(10项)
这是所有高并发的底层前提,没调好,Nginx 再怎么配都卡在系统瓶颈上:
/etc/security/limits.conf
中为
nginx
用户设硬软限制:
、
net.core.somaxconn = 65535
:提升全连接队列深度,避免 accept 队列溢出丢包
net.core.netdev_max_backlog = 262144
:网卡收包队列,防突发流量丢帧
net.ipv4.tcp_max_syn_backlog = 65535
:SYN 半连接队列,配合
抗 SYN Flood
net.ipv4.tcp_tw_reuse = 1
:允许 TIME_WAIT 套接字复用于新连接(客户端地址+端口可重用)
net.ipv4.tcp_fin_timeout = 30
:缩短 FIN_WAIT_2 状态超时,加快连接回收
net.ipv4.ip_local_port_range = "1024 65535"
:扩大本地端口范围,缓解反向代理端口耗尽
vm.swappiness = 10
:降低内存换出倾向,保障 worker 进程响应稳定性
fs.file-max = 2097152
:系统级最大文件句柄数,需 ≥ nginx 总连接理论值
net.ipv4.tcp_congestion_control = bbr
:启用 BBR 拥塞控制算法,提升弱网吞吐与低延迟
Nginx 主进程与 Worker 调度(8项)
让每个 CPU 核心专注服务一个 worker,消除缓存抖动和上下文切换开销:
eclipse maven plugin插件安装和配置 中文WORD版
本文档主要讲述的是eclipse maven plugin插件安装和配置;感兴趣的朋友可以过来看看
下载
worker_processes auto
:自动匹配物理 CPU 核心数(非超线程数),避免进程争抢
worker_cpu_affinity auto
:内核 4.0+ 支持,比手动掩码更安全可靠
worker_rlimit_nofile 1048576
:必须 ≥
,否则无效
worker_priority -10
:提升调度优先级,在混合部署中抢占更及时的 CPU 时间片
events { use epoll; }
:Linux 必选,epoll 是唯一支持百万级连接的高效模型
worker_connections 65535
:单 worker 并发上限,静态服务可设高,反代场景建议 ≤32768
multi_accept on
:一次 accept 多个就绪连接,配合 high
提升吞吐
accept_mutex off
:关闭惊群锁(Nginx 1.11.3+ 默认关闭),让所有 worker 竞争新连接
HTTP 与 TCP 传输层精细控制(12项)
从连接建立、头部分发、数据拷贝到超时释放,每一步都影响毫秒级体验:
keepalive_timeout 60s
:API 反代建议 30s,静态资源可设 75s;过长易积压空闲连接
keepalive_requests 10000
:单连接最大请求数,防长连接被恶意占满
tcp_nodelay on
:禁用 Nagle 算法,确保小包(如 HTTP 头、JSON 响应)立即发出
tcp_nopush on
:配合
启用 TCP_CORK,实现满包发送 + 零拷贝
sendfile on
:绕过用户态,直接由内核完成文件到 socket 的数据搬运
sendfile_max_chunk 512k
:限制单次 sendfile 最大数据量,防大文件阻塞事件循环
client_header_buffer_size 4k
:防止常规请求头触发磁盘临时文件读写
large_client_header_buffers 8 8k
:应对含大量 Cookie 或自定义 Header 的请求
reset_timedout_connection on
:主动重置超时连接,快速释放资源
proxy_buffering on
:开启上游响应缓冲,避免后端慢导致 worker 长期阻塞
proxy_buffer_size 128k
:首块缓冲区大小,需 ≥ 后端返回的最大响应头
proxy_busy_buffers_size 256k
:忙时可用缓冲区总和,应为
的 2 倍左右
nginx soft nofile 1048576nginx hard nofile 1048576tcp_syncookies = 1worker_connections × worker_processesworker_connectionssendfile onproxy_buffer_size