Web 服务器Multi-Processing Module
MPM 多进程模型 是什么?
prefork 每连接一进程,worker 每连接一线程,event 是异步版
类比:每个客人配一个专属服务员(prefork)
三种 MPM
选 MPM 就是选并发模型,直接决定能扛多少连接。
- prefork:每连接一进程,稳定但吃内存,兼容非线程安全模块
- worker:每进程多线程,内存更省,适合高并发
- event:worker 的异步版,keep-alive 连接不再占用线程,是现在的推荐
关键参数
MaxRequestWorkers 决定并发上限,ServerLimit 决定进程/线程池上限,StartServers 是预热数量。配小了会 503,配大了会 OOM。
和 Nginx 对比
同样 1 万并发,Apache prefork 需要 1 万进程(GB 级内存),Nginx 几个 worker 就够(MB 级)。这就是 Nginx 在 C10K 之后迅速取代 Apache 的原因。