Apache 目前一共有三种稳定的 MPM 模式。它们分别是 prefork/worker 和 event,它们同时也代表 Apache 的演变和发展。今天杜老师就聊下 prefork 模式!
prefork 模式的工作原理
prefork 模式是很古老但是非常稳定的模式。用的是多个子进程,Apache 在启动之初,控制进程会建立若干子进程,然后等待请求进来,并且总是视图保持一些备用的子进程。为不在请求到来时再生成子进程,所以需要根据需求不断的创建新的子进程,最大可以达到每秒 32 个直到满足需求为止。之所以这样做,是为减少频繁创建和销毁进程的开销。每个子进程中只有一个线程,在一个时间点,只能处理一个请求。
在 Unix 系统,父进程通常以 root 身份运行以便绑定 80 端口,而 Apache 产生的子进程通常以一个低特权用户运行。User 和 Group 指令用于配置子进程的低特权用户。运行子进程的用户必须要对它所服务的内容有读取权限,但对服务内容之外的其它资源必须拥有尽可能少的权限。
prefork 模式的安装方法
在编译安装 Apache 的过程中,加参数–with-mpm=prefork 即可,如不加也可以,因为 Apache 默认采用 prefork 模式进行编译安装。
也可以使用–enable-mpms-shared=all,这样在编译的时候会在 modules 目录下自动编译出三个 MPM 文件的 so,然后通过修改 httpd.conf 配置文件更改 MPM 即可。
条评论