Nginx 原理以及参数配置
Nginx 的 master-worker 机制
- 一个 Nginx 是由一个 master 主进程,与多个 worker 进程组成。
- master 进程负责监听客户端发来的请求。
- 而 worker 进程主要负责争抢 master 进程接收到的连接数,最后有 worker 进程负责将请求转发到相应的 Tomcat(负载均衡)。对于静态资源,worker则不需要转发请求,直接返回静态资源给客户端。

- 客户端向 Nginx 发起请求;
- 由 master 进程监听客户端发来的请求;
- master 监听到客户端发来的请求之后,会通知 worker。worker 负责争抢请求;
- 如果请求是静态资源,则 worker 会直接将静态资源返回给客户端;如果是动态资源,worker 则会将资源分发给 tomcat 处理;这种争抢策略的好处是:可以极大的提高 Nginx 的并发效率

注:当 worker 的数量与 CPU 数量一致时 Nginx 的效率最高。因为每一个 worker 就是一个进程,worker 的数量与 cpu 一致时,每一个 worker 都会绑定一个 cpu。过少则会空出 cpu,使多余 cpu 空闲;过多则会导致 cpu 来回切换进程,消耗时间;
master-worker 机制的好处
- 首先,对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。
- 其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master进程则很快启动新的worker进程。
- 当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以降低了风险。
worker 的数量
- Nginx 同redis类似都采用了io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话下。每个worker的线程可以把一个cpu的性能发挥到极致。所以worker数和服务器的cpu数相等是最为适宜的。设少了会浪费cpu,设多了会造成cpu频繁切换上下文带来的损耗。
worker_processes 4
#work绑定cpu(4 work绑定4cpu)。
worker_cpu_affinity 0001 0010 0100 1000
#work绑定cpu (4 work绑定8cpu中的4个) 。
worker_cpu_affinity 00000001 00000010 00000100 00001000
Nginx 连接数问题
worker_processes 4;
worker_connections 1024;
- Nginx 能够支持的最大链接数为:worker_processes * worker_connections
- Nginx 所能支持的最大并发数:
静态资源:worker_processes * worker_connections / 2
动态资源:worker_processes * worker_connections / 4
因为,Nginx 中 worker 进程是采用异步非阻塞。
- 当 master 监听到 w请求后,worker 会与 master 建立一次链接之后见断开。
- 如果请求的是静态资源,则 worker 会再次与 master 建立链接返回静态资源给客户端后断开链接
所以对于静态资源所能支持的最大并发数为:worker_processes * worker_connections / 2; - 如果是动态链接,worker 还有与 tomcat 建立两次链接
所以动态链接所能支持的最大并发数为:worker_processes * worker_connections / 4;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异