Nginx 高并发能力的底层基石是非阻塞 IO,它通过事件驱动与 epoll 多路复用使单 worker 进程高效管理数万连接,避免线程阻塞、内存暴涨和资源浪费,并辅以精准超时机制防止慢连接累积。
Non-blocking IO 是 Nginx 实现高并发能力的底层基石,它不靠“加快单个请求”,而是让有限资源持续运转、不空等——一个 worker 进程就能同时盯住数万连接。
传统阻塞模型中,每个连接需独占一个线程:一旦客户端下载慢、网络卡顿或发包延迟,线程就卡在 read()/write() 上,无法处理其他请求。Nginx 把套接字设为非阻塞模式后,哪怕数据还没到、缓冲区已满,系统调用也立刻返回 EAGAIN/EWOULDBLOCK,而不是挂起等待。worker 进程随即转向处理下一个就绪事件,资源始终在线。
Linux 下 Nginx 默认使用 epoll,它能一次性监听成千上万个文件描述符的状态变化:
面对大文件下载或长响应流,Nginx 不会把整个响应体加载进内存再发出去。它从上游(如后端应用)读一点、往客户端写一点,依赖 TCP 窗口和系统 socket 缓冲区自然控速。这意味着:
非阻塞本身不解决“永远不结束”的问题,所以 Nginx 提供精准的超时控制:
这些配置与非阻塞 I/O 协同工作,确保慢连接不会累积成资源黑洞。