2015/5/3 关于APACHE的几个运行模式

linux系统下的prefork、worker、event

区分哪个模式:

apachectl -l

先说prefork,这个用的是多进程模式,总所周知,多进程的优点就是应该就是稳定性,各个进程独立,相互不受影响,缺点就就是过于资源消耗过大。然后说说他的配置:

<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>

startservers:因为prefork预先产生子进程的,就是说服务开始后,就会自动生成子进程,这样能够节省时间吧,有些说法就是可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能,而后的数字就是其预先生成的子进程数量。

minspareservesr:这个是最少预备进程,就是说服务开启后,必须保持这个最少进程数,即使实际进程没那么多;

maxspareservers:这个是最多预备进程,进程数不能超过这个数量,否则将会自动杀掉一些进程,保持规定的最大数量。

maxrequestworkers:设置服务器可以同时处理的最大请求数,缺省是150,而apache默认最大是256,这个可以根据( ps -ef|grep http|wc -l  )得出的结果来参考,要是结果大于设置值,那么就要进行请求排队,这就是资源尚有,但http访问却很慢的原因;注:apache2.312之前,此项称为:maxclient;

maxconnectsperchild:设置每个进程的最大连接数,缺省为零,则表示不设上限。

然后说worker模式,这是个混合品种,之所以这样说是因为它使用的是多进程、多线程混合模式,这个优点是显而易见的内存占用量少,适合于流量大的HTTP服务,缺点就是要是某个线程内存崩溃,那么可能回影响真个进程。然后说说配置:

<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250 
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

worker的设置项跟prefork的设置项差不多,其相同的设置项所表达的作用是一样的,我只说不一样的,

startservers:同上;

minsparethreads:这个设置的是最少的线程数,并且会一直保持在这个线程数,startserver自动生成;

maxsparethreads:这个设置的是最大的线程数,不能超过这个线程数,否则会被杀掉哦;

threadperchild:这个每个子进程下所固定的线程数量,每个子进程互相独立哦;缺省 64,如果负载较大,64也是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000

maxrequestworkers:设置最大请求数,这个数值要大于  得数是由子进程总数乘以每个子进程下线程数得出,缺省最大子进程为16,是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000。

maxconnectsperchild:设置每个进程的最大连接数,缺省为零,则表示不设上限。


最后event,这个真心不熟悉,听说还是实验用品,所以暂且不折腾!


window下的winnt模式

因为之前一直使用的window,所以这个比较熟悉,这个是针对window nt优化的多路处理模块,就是一个父进程产生一个子进程,然后再这个子进程内轮流产生多个线程来处理请求。也就是说他只有两个线程。说说配置

<IfModule mpm_winnt.c>
   ThreadsPerChild 250
   MaxRequestsPerChild 5000
</IfModule>

这个配置比较少啊,

threadperchild:这个是设置子进程下的线程数量,因为他只有一个进程,所以这个数值得足够大,但也不能太大该参数以服务器的响应速度为准的, 数目太大的反而会变慢。缺省是49,最大值为1920,视服务器配置而定。

maxrequestsperchild:即是进程同时处理最大的请求数,若设为零则表示无上限,但建议不设为零,放置内存溢出、减轻服务器负担。这个还是要看服务器配置如何,要是内存足够的话,设为零也不足为道也!

你可能感兴趣的:(2015/5/3 关于APACHE的几个运行模式)