轮询调度是nginx在高并发架构基础上实现请求均匀分发的策略,其本身不提供高并发能力;真正支撑高并发的是事件驱动+异步非阻塞模型(如epoll)、多进程worker架构及合理配置(worker_processes、worker_connections),轮询需配合健康检查(max_fails/fail_timeout)才能保障可靠性。

轮询调度本身不是高并发的“实现者”,而是Nginx在已具备高并发能力基础上,对后端流量做均匀分发的一种策略。真正支撑高并发的是Nginx底层的架构设计,轮询只是在其之上合理分配请求的手段。
事件驱动 + 异步非阻塞是高并发的根基
Nginx不依赖多线程或每个连接开一个进程,而是用单个Worker进程通过事件循环(如Linux下的epoll)同时监听并处理成千上万个连接。这种模型内存占用低、上下文切换少,能轻松承载10万+并发连接。
- 确保配置中启用高效事件模型:use epoll;(Linux环境)
- worker_processes建议设为CPU核心数,避免过多进程争抢资源
- 每个worker能处理的连接数由worker_connections控制,需结合系统ulimit调整
轮询调度需配合健康检查才可靠
纯轮询不感知后端状态,若某台服务器宕机,请求仍会照常转发过去,导致失败率上升。必须启用主动健康检查机制,让Nginx自动剔除和恢复节点。
- 在upstream块中为每个server添加max_fails=3 fail_timeout=30s
- 可进一步配置health_check(需启用ngx_http_upstream_health_check_module)做HTTP级探测
- 轮询天然无状态,适合无会话依赖的服务,如API网关、静态资源分发
负载均衡层要与后端规模匹配
单台Nginx反向代理能力再强,也有物理上限。当并发持续超过5万时,应考虑横向扩展Nginx节点,并在其前增加LVS或云LB做四层分发。
- LVS(DR模式)做首层TCP转发,零拷贝、低延迟,承担90%以上连接压力
- Nginx专注七层逻辑:SSL终止、URL路由、限流、日志等
- 多个Nginx实例间通过Keepalived实现VIP高可用,避免单点故障
轮询配置简洁但细节决定稳定性
看似简单的server列表,实际影响调度公平性和容错表现。
- 不要省略端口,即使默认80也要显式写出:server 10.1.60.112:80;
- 避免IP直连,推荐用DNS名称或内网域名,便于后期扩容替换
- 上线前务必验证:连续发起请求,观察各后端access.log中请求分布是否接近1:1











