Nginx是大型架构的核心,下面我详解Nginx并发核心@mikechen
多进程架构
Nginx 采用典型的 Master-Worker 多进程架构。
一个 master 进程负责全局管理与配置重新加载、日志轮转等。
若干个 worker 进程负责实际的网络事件处理与请求分发。

每个请求在一个 worker 进程内完成处理,彼此独立,互不共享状态,从而降低锁竞争和跨进程通信成本。
通过这种结构,可以在不增加大量线程的情况下实现高并发。
此设计的稳定性来自于隔离,单个 worker 异常通常不会直接影响到其他 worker。
worker 的数量,通常建议与 CPU 核心数相匹配。
既能充分利用多核,又避免过多进程带来的上下文切换与内存开销的剧增。
事件驱动架构
Nginx 以事件驱动模型作为核心,所有连接的 I/O 操作通过事件通知来驱动处理,而不是为每个连接创建一个独立的线程或阻塞等待。
事件循环,通过高效的 I/O 多路复用机制,来实现“轮询就绪事件并分发处理”的逻辑,从而在一个进程中支撑大量并发连接。

通过这种方式,大幅降低线程/进程切换开销,极大提高每个单位时间内的处理事件数。
对于 I/O 密集型应用,CPU 主要用于就绪事件的处理,空闲等待时间被利用到实际工作中,吞吐量显著提升。
IO 多路复用
IO 多路复用,指的是在单一线程/进程中同时监听和管理多个文件描述符的可读/可写事件。

通过操作系统提供的多路复用接口(如 epoll、kqueue、select 等),Nginx 能够在一个事件循环内高效地检测大量连接的就绪状态。
IO 多路复用的核心目标:是让一个或少量的执行单元(通常是单个线程、或单个进程中的事件循环)。
在同一时间内监视和处理大量的输入/输出描述符(socket、文件等)的就绪事件。
这样就能在不为每个连接创建独立线程的前提下,处理海量并发连接,显著降低资源消耗与上下文切换开销。
非阻塞I/O
非阻塞 I/O 指当资源不可用(如数据未就绪)时,I/O 调用立即返回错位(通常为 EAGAIN),而不是阻塞等待。
这允许同一进程/线程在一个事件循环里继续处理其他就绪事件。

比如:Nginx 的 worker 在遇到需要等待远端(上游应用/数据库/缓存等)响应的场景时。
将该操作设为非阻塞并注册相应事件,待就绪再继续处理。
这样,工作进程仍然可以继续处理其他就绪的事件,极大提升并发轮转效率与资源利用率。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》