在这里我就prefork和worker两种最为常用的工作模式进行比较:
prefork–Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。
worker–使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起”死掉”,所以要保证一个程式在运行时必须被系统识别为”每 个线程都是安全的”。
OurApache
Apache基础知识
Apache的prefork模式和worker模式
OurApache
Apache基础知识
相对来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。
OurApache
Apache高级应用
一个apache有linux下的并发不是很高的,大约到3K的样子(其实处理的http的请求可能只有300/s),普通的服务器都会不同程度的出现问题.apache有关并发控制主要是 prefork和worker二个其中一个来控制.我们可以使用httpd -l来确定当前使用的MPM是prefork.c,还是Worker.c.下面是apache中有关prefork的配置.下面是我优化过的参数.
OurApache
Apache基础知识
Apache 2.0中prefork.c模块和worker.c模块的比较
OurApache
Apache高级应用