跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Nginx 负载均衡调优终极清单:从内核到配置文件的 30 个性能参数

Nginx万级并发需三层协同优化:内核资源(10项)、Worker调度(8项)、HTTP/TCP传输(12项),共30个关键参数环环相扣,缺一不可。 想让 Nginx 负载均衡真正扛住万级并发、低延迟转发,光配 upstream 和 weight 远远不够。关键在三层协同:Linux 内核资源底座、Nginx 进程与事件调度层、HTTP 传输与连接控制层。30 个参数不是堆砌,而是环环相扣的链路优化。 系统内核与资源限制(10项) 这是所有高并发的底层前提,没调好,Nginx 再怎么配都卡在系统瓶颈上: /etc/security/limits.conf 中为 nginx 用户设硬软限制:
nginx soft nofile 1048576
、
nginx hard nofile 1048576
net.core.somaxconn = 65535 :提升全连接队列深度,避免 accept 队列溢出丢包 net.core.netdev_max_backlog = 262144 :网卡收包队列,防突发流量丢帧 net.ipv4.tcp_max_syn_backlog = 65535 :SYN 半连接队列,配合
tcp_syncookies = 1
抗 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_connections × worker_processes
,否则无效 worker_priority -10 :提升调度优先级,在混合部署中抢占更及时的 CPU 时间片 events { use epoll; } :Linux 必选,epoll 是唯一支持百万级连接的高效模型 worker_connections 65535 :单 worker 并发上限,静态服务可设高,反代场景建议 ≤32768 multi_accept on :一次 accept 多个就绪连接,配合 high
worker_connections
提升吞吐 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 :配合
sendfile 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 :忙时可用缓冲区总和,应为
proxy_buffer_size
的 2 倍左右

相关文章