2分钟
05 prefork
多进程I/O模型,每个进程响应一个请求,默认模型
一个主进程:生成和回收n个子进程,创建套接字,不响应请求
多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先
生成多个空闲进程,等待请求,最大不超过1024个
优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP
的拓展不需要支持线程安全)
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种
场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。
prefork的默认配置:
<IfModule prefork.c>
StartServers 8 服务启动时,预先同时开启几个进程
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256 最多进程数,最大20000
MaxClients 256 最大并发
MaxRequestsPerChild 4000 子进程最多能处理的请求数量。在处
理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这
时候子进程占用的内存就会释放(为0时永远不释放)
</IfModule>
学员评价