Web 服务架构与网络 I/O 模型详解
一、主流 Web 服务模型
Apache 三种模式对比
Apache 作为老牌 Web 服务器,其核心在于进程管理策略,不同模式下性能表现差异明显。
prefork 模型(预派生模式)
- 核心机制:主控制进程派生多个独立子进程,使用
select模型,最大并发约 1024;每个子进程单线程响应用户请求。 - 资源特性:占用内存较多,但稳定性极高,故障隔离性好。
- 适用场景:访问量中等的场景,对稳定性要求高于并发能力。
- 优缺点:极致稳定,但每个请求对应一个进程,资源占用高,不适合高并发场景。
worker 模型(多进程 + 多线程混合模式)
- 核心机制:主进程启动多个子进程,每个子进程包含固定线程数;线程处理请求,线程不足时新建子进程补充。
- 资源特性:相比 prefork 内存占用更少,支持更高并发。
- 优缺点:内存占用低,可处理更多请求。但在高并发下,长连接(keepalive)会长期占用线程,易出现无可用线程的情况。
event 模型(事件驱动模型)
- 核心机制:2012 年 Apache 2.4.X 正式支持,基于
epoll事件驱动;每个进程响应多个请求,专门线程管理 keepalive 连接。 - 核心优化:解决 keepalive 连接空占线程的问题,有真实请求时才分配服务线程,执行完立即释放。
- 优缺点:单线程响应多请求,内存占用少,高并发表现优秀。缺点是无线程安全控制,需开发者注意。
Nginx - 高性能 Web 服务端
Nginx 由伊戈尔・赛索耶夫开发,专为高并发场景设计。核心代码约 19.8 万行,被 F5 收购后依然保持开源高效。
- 核心特性:支持 HTTP 服务器、反向代理、邮件服务器;快速响应静态网页请求。
- 功能扩展:支持 FastCGI/SSL/Virtual Host/URL Rewrite/Gzip/HTTP Basic Auth。
- 负载均衡:1.9 版本以上开启 stream 模块可支持 TCP/UDP 负载均衡。
- 应用场景:天猫、淘宝、京东、小米等一线互联网公司均广泛使用或二次开发。
二、服务端 I/O 流程
基本概念
- I/O:Input/Output(输入 / 输出)。
- IOPS:每秒输入输出量,衡量磁盘性能的核心指标,指单位时间内系统处理的 I/O 请求数(读 / 写)。
- 完整 I/O 过程:用户空间进程与内核空间数据的交换。由于内核与用户空间严格隔离,无法直接访问,需将内核内存数据拷贝到用户进程内存。
I/O 类型
- 磁盘 I/O:进程向内核发起系统调用,请求磁盘资源(如 HTML、图片)。内核通过驱动将文件加载到内核内存空间,再拷贝到进程内存。大文件加载需等待较长时间。
- 网络 I/O:本质是对 socket 文件的读写(一切皆文件),核心是网络协议栈与用户空间进程的数据交换。
I/O 通用流程
无论是磁盘还是网络,标准 I/O 通常经历两个阶段:
- 数据准备阶段:将数据从文件加载到内核内存缓冲区,耗时较长。

