直接提升系统吞吐量的关键是优化Nginx负载均衡:选对算法(轮询、加权轮询、最少连接、IP Hash)、两端启用KeepAlive(客户端到Nginx及Nginx到后端)、配置健康检查动态剔除异常节点,并配合Gzip压缩与worker参数调优。

直接提升系统吞吐量的关键,不是堆服务器,而是让现有资源跑得更稳、更满、更少空转。Nginx 负载均衡器在这其中起的是“智能调度中枢”作用——它不增加算力,但能让每台后端服务器的 CPU、内存、连接数都用在刀刃上。
选对算法,匹配业务特征
算法不是越复杂越好,而是要贴合你的服务类型:
- 轮询(Round Robin):适合静态资源或无状态 API,所有后端配置一致时最简单公平;
- 加权轮询(Weighted Round Robin):当后端服务器性能不均(比如一台 16C/64G,另一台 8C/32G),给强机设 weight=5,弱机设 weight=2,流量自然按比例分配;
- 最少连接(Least Connections):特别适合长连接场景(如 WebSocket、gRPC 流式接口),请求会自动流向当前活跃连接最少的机器,避免某台被“撑爆”;
- IP Hash:需要会话保持又不想引入 Redis 存 session 时可用,但注意 Nginx 本身不处理故障转移,若某台宕机,对应 IP 段用户会短暂中断。
必须开启长连接与连接复用
默认情况下,Nginx 到后端是短连接,每次请求都重建 TCP,光握手挥手就吃掉大量 CPU 和延迟。真正提升吞吐的硬招是两端都启用 KeepAlive:
- 客户端到 Nginx:配置 keepalive_timeout 65 和 keepalive_requests 10000;
- Nginx 到后端:在 upstream 块中加 keepalive 32,并确保 proxy_http_version 设为 1.1、proxy_set_header Connection "";
- 后端服务(如 Tomcat、Node.js)也要调大自身的 keep-alive timeout,且需略大于 Nginx 的 proxy_read_timeout,防止连接被单方面断开。
健康检查 + 动态剔除,不让请求落空
吞吐量不是看峰值能打多少,而是看持续稳定能扛多少。一台后端响应变慢或假死,却还在收请求,等于主动制造瓶颈:
- 用 health_check interval=3 fails=2 passes=2 配合 HTTP 状态码检测(如 GET /health 返回 200);
- 配合 max_fails 和 fail_timeout 自动摘除异常节点,恢复后再平滑加回;
- 避免只依赖端口通断(TCP 检查),因为服务可能进程卡住但端口仍监听。
配合基础优化,释放 Nginx 本身潜力
负载均衡再好,如果 Nginx 自身没调优,也会成瓶颈:
- 开启 Gzip:对 JSON、HTML、JS 等文本压缩,带宽节省 60%+,相当于同等带宽下多承载近两倍请求;
- 调高 worker_processes 和 worker_connections,匹配服务器 CPU 核数与预期并发量;
- 合理设置 proxy_buffer、proxy_busy_buffers_size,避免小包频繁拷贝拖慢吞吐。


















