Apache的3种工作模式
原创
©著作权归作者所有:来自51CTO博客作者HaydenGuo的原创作品,请联系作者获取转载授权,否则将追究法律责任
prefork、worker、event 的配置和区别。
1. Apache 的工作模式
Apache有三种工作模式:分别是prefork,worker,event。
1.1 prefork
(多进程,每个进程产生子进程)
prefork 是一种非线程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个进程出现问题不会影响到其他请求。
1.2 worker
(多进程,每个进程生成多个线程)
worker是使用多个子进程、每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。
1.3 event
event模式,是为解决keep-alive保持长连接出现的一种工作模式,使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式就出现了。
2. 如何配置模块
2.1 查当前工作模式
worker.c 代表工作在worker 模式下
prefork.c 代表工作在prefork 模式下
2.2 配置工作模式
在安装的时候需要指定模式:
[root@localhost httpd-2.4.1]# ./configure --prefix=/usr/local/apache2worker --enable-so --with-mpm=worker
[root@localhost httpd-2.4.1]# make
[root@localhost httpd-2.4.1]# make install
--with-mpm=worker 选项指定工作模式为worker,不指定模式的话,默认为Prefork。
3. 三种模式解析
配置在/apache/conf/extra/httpd-mpm.conf文件。
3.1 perfork
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
# StartServers
数量的服务器进程开始。
# MinSpareServers
最小数量的服务器进程,保存备用。
# MaxSpareServers
最大数量的服务器进程,保存备用。
# MaxRequestWorkers
最大数量的服务器进程允许开始。
# MaxConnectionsPerChild
最大连接数的一个服务器进程服务。
3.2 worker
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
# StartServers
初始数量的服务器进程开始。
# MinSpareThreads
最小数量的工作线程,保存备用。
# MaxSpareThreads
最大数量的工作线程,保存备用。
# ThreadsPerChild
固定数量的工作线程在每个服务器进程。
# MaxRequestWorkers
最大数量的工作线程。
# MaxConnectionsPerChild
最大连接数的一个服务器进程服务。
3.3 event
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
# StartServers
初始数量的服务器进程开始。
# MinSpareThreads
最小数量的工作线程,保存备用。
# MaxSpareThreads
最大数量的工作线程,保存备用。
# ThreadsPerChild
固定数量的工作线程在每个服务器进程。
# MaxRequestWorkers
最大数量的工作线程。
# MaxConnectionsPerChild
最大连接数的一个服务器进程服务。
作者:HaydenGuo
每一个前十年都想不到后十年我会演变成何等模样,可知人生无常,没有什么规律,没有什么必然。
只要我还对新鲜的知识、品格的改进、情感的扩张、有胃口,这日子就是值得度过的。