`

apache调优

 
阅读更多
http://my.oschina.net/renqingshigu/blog/678701
prefork和worker模式的比较

prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。

worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。



./configure --with-mpm=worker(prefork)

httpd -v

apachectl –l 显示当前工作模式

#mpm_perfork模块的默认配置



<IfModule mpm_prefork_module>

StartServers 5 #推荐设置:小=默认 中=20~50 大=50~100

MinSpareServers 5 #推荐设置:与StartServers保持一致

MaxSpareServers 10 #推荐设置:小=20 中=30~80 大=80~120

MaxClients 150 #推荐设置:小=500 中=500~1500 大型=1500~3000

MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=10000~500000

(还需要额外注意ServerLimit参数,该参数一般要大于MaxClients的值。)

</IfModule>



StartServers,启动Apache时创建的子进程数。

MinSpareServers,处于空闲状态的最小子进程数。

MaxSpareServers,处于空闲状态的最大子进程数。

MaxClients,允许同时连接的最大请求数量。

MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量

ServerLimit是最大的进程数,MaxClients是最大的请求并发,所以他们的关系是MaxClients=ServerLimit*进程的线程数
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics