Nginx是大型架构核心,下面我详解Nginx高并发原理@mikechen
多进程模型
Master 进程:负责管理(加载配置、平滑重载、监控、启动/终止 Worker),基本不处理请求,占用资源极少。
Worker 进程:真正干活的,通常配置为 等于或略少于 CPU 核心数(如 4 核机器设 4 个 Worker)。

优点:充分利用多核 CPU,无需线程锁竞争(进程间独立)。
一个 Worker 挂掉不会影响其他,Master 会快速拉起新进程。
比 Apache 的“每个请求一个进程/线程”模型节省大量上下文切换和内存。
一句话:进程数匹配 CPU 核数 + 每个进程处理海量连接 = 多核利用率极高 + 稳定性好。
事件驱动的异步非阻塞架构
每个 worker 是单线程事件循环,不为每个连接单独开线程/进程。
而是通过事件回调处理大量连接,避免了线程切换和锁带来的开销。

对于慢 I/O(如磁盘、上游服务),Nginx 会注册事件“有数据再通知我”。
在等待期间继续处理其他连接,把等待时间“榨干”,大幅提高并发能力。
IO 多路复用(epoll)
Nginx 在 Linux 上,使用 epoll 等 IO /多路复用机制。

让一个 worker 进程就能同时管理成千上万条连接,而不是 1 连接 1 线程/进程。
epoll 在内核维护就绪事件队列,有事件才通知进程。
不需要对所有连接轮询,时间复杂度接近 O(1)。
在高并发场景下,性能、和可扩展性远优于 select/poll。
不需要每次都把全部 fd 集合从用户态拷贝到内核,返回的是真正就绪的 fd 列表。
一句话:epoll 让 Nginx “只在有活干的时候才被叫醒”,而不是每秒被轮询几万次。
轻量级内存与模块化
Nginx 单连接的内存占用非常小,worker 能承载大量处于 keep-alive 或等待状态的连接,而总体内存压力可控。

内置高效的反向代理和负载均衡(轮询、IP hash 等),能把大量请求分摊到后端多台应用服务器上,进一步提高整体并发与吞吐能力。