一、Web 服务介绍
1.1 Apache 模型
1.1.1 prefork 模型(预派生模式)
- 核心机制:主控制进程派生多个独立子进程,使用
select模型,最大并发 1024;每个子进程单线程响应用户请求 - 资源特性:占用内存较多,但稳定性极高
- 配置特点:可设置进程数的最大值和最小值
- 适用场景:访问量中等的场景
- 优缺点
- ✅ 优点:极致稳定,故障隔离性好
- ❌ 缺点:每个请求对应一个进程,资源占用高,并发能力弱,不适合高并发场景
1.1.2 worker 模型(多进程 + 多线程混合模式)
- 核心机制:主进程启动多个子进程,每个子进程包含固定线程数;线程处理请求,线程不足时新建子进程补充
- 资源特性:相比 prefork 内存占用更少,支持更高并发
- 优缺点
- ✅ 优点:内存占用低,可处理更多请求
- ❌ 缺点:长连接(keepalive)会长期占用线程,高并发下易出现无可用线程的情况(prefork 也存在此问题)
1.1.3 event 模型(事件驱动模型)
- 核心机制:2012 年 Apache 2.4.X 正式支持,基于
epoll事件驱动;每个进程响应多个请求,专门线程管理 keepalive 连接 - 核心优化:解决 keepalive 连接空占线程的问题,有真实请求时才分配服务线程,执行完立即释放
- 优缺点
- ✅ 优点:单线程响应多请求,内存占用少,高并发表现优秀
- ❌ 缺点:无线程安全控制
1.2 Nginx - 高性能的 Web 服务端
1.2.1 Nginx 简介
- 开发者:伊戈尔・赛索耶夫(俄罗斯),为 Rambler.ru 搜索引擎开发
- 开发历程:2002 年启动开发,2004 年 10 月发布 0.1.0 版本;2019 年被 F5 以 6.7 亿美元收购
- 核心代码:核心模块代码约 19.8 万行,按收购价折算约 2.2 万人民币 / 行
- 官方地址:https://nginx.org
- 版本类型:开发版、稳定版、过期版
- 应用场景:天猫、淘宝、京东、小米、网易、新浪等一线互联网公司均使用或二次开发
1.2.2 Nginx 核心特性
- 支持 HTTP 服务器、反向代理、邮件服务器
- 快速响应静态网页请求
- 支持 FastCGI/SSL/Virtual Host/URL Rewrite/Gzip/HTTP Basic Auth
- 1.9 版本以上开启 stream 模块可支持 TCP/UDP 负载均衡
- 支持第三方功能扩展
二、服务端 I/O 流程
2.1 基本概念
- I/O:Input/Output(输入 / 输出)
- IOPS:每秒输入输出量,衡量磁盘性能的核心指标,指单位时间内系统处理的 I/O 请求数(读 / 写)
- 完整 I/O 过程:用户空间进程与内核空间数据的交换,需将内核内存数据拷贝到用户进程内存(内核与用户空间严格隔离,无法直接访问)

