Apache三种工作模型
Apache目前支持三种不同的MPM多进程处理模块
1)prefork模型
预派生模式,一个主控进程,生成多个子进程,每个子进程有一个独立的线程处理用户请求,
相对比较占用内存,但是比较稳定,可以设置最大最小进程数,是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景
优点:稳定
缺点:1024个进程难以应对高并发场景
2)woker
多进程和多线程混合模型,一个控制进程启动多个子进程,子进程里包含固定的线程来处理请求,线程不够用时开启一个新的子进程
优点:相比prefork占用内存较少,同时可以处理更多请求
缺点:使用keepalive的长连接,某个线程会长时间被占据,即使没有传输数据也会等到超时才会释放,
多数被这样占用时,高并发场景下一样会无线程可用
3)event
在每个进程的线程中加入一个专门负责监控各线程的监听线程,当无数据传输时将其及时回收,处理新请求
当进程处理多次请求后,会回收子进程重新建立
优点:高并发下表现更优秀
缺点:缺少线程安全控制