apache如何做高并发处理

 我来答
百度网友bee33766c1
2018-07-06 · TA获得超过2770个赞
知道大有可为答主
回答量:3071
采纳率:54%
帮助的人:610万
展开全部

作为Apache的核心模块它针对不同的操作系统提供了多个不同的MPM模块,例如:mpm_beos、mpm_event、mpm_netware、mpmt_os2、mpm_prefork、mpm_winnt、mpm_worker。

如果条件允许,我们可以根据实际需求将指定的MPM模块编译进我们自己的Apache中(Apache的源码是开放的,允许用户自行编译)。不过,如果在
编译时我们没有选择,Apache将按照如下表格根据不同的操作系统自行选择对应的MPM模块,这也是Apache针对不同平台推荐使用的MPM模块。


Windows    mpm_winnt    Windows系统    

Unix/Linux    mpm_winnt    Unix/Linux系统    

BeOS    mpm_beos    由Be公司开发的一种多媒体操作系统,官方版已停止更新。    

Netware    mpm_netware    由NOVELL公司推出的一种网络操作系统    

OS/2    mpmt_os2    一种最初由微软和IBM共同开发的操作系统,现由IBM单独开发(微软放弃OS/2,转而开发Windows)   

块下的默认配置:

mpm_winnt模块

#由于mpm_winnt模块只会创建1个子进程,因此这里对单个子进程的参数设置就相当于对整个Apache的参数设置。<IfModule mpm_winnt_module>
ThreadsPerChild      150 #推荐设置:

小型网站=1000  我的中型网站(抄底  chaodiquan.com)=1000~2000 这个数字对于服务器还说还是比较轻松的     如果你是大型网站=2000~3500MaxRequestsPerChild    0 #推荐设置:小=10000 中或大=20000~100000</IfModule>123456

对应的配置参数作用如下:

ThreadsPerChild:每个子进程的最大并发线程数。
MaxRequestsPerChild:每个子进程允许处理的请求总数。如果累计处理的请求数超过该值,该子进程将会结束(然后根据需要确定是否创建新的子进程),该值设为0表示不限制请求总数(子进程永不结束)。
该参数建议设为非零的值,可以带来以下两个好处:
1. 可以防止程序中可能存在的内存泄漏无限进行下去,从而耗尽内存。
2. 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

注意:在以上涉及到统计请求数量的参数中,对于KeepAlive的连接,只有第一个请求会被计数。

mpm_perfork模块

<IfModule mpm_prefork_module>
StartServers          5 #推荐设置:小=默认 中=20~50 大=50~100MinSpareServers       5 #推荐设置:与StartServers保持一致MaxSpareServers      10 #推荐设置:小=20 中=30~80 大=80~120 MaxClients          150 #推荐设置:小=500 中=500~1500 大型=1500~3000MaxRequestsPerChild   0 #推荐设置:小=10000 中或大=10000~500000</IfModule>1234567此外,还需额外设置ServerLimit参数,该参数最好与MaxClients的值保持一致。# StartServers:  数量的服务器进程开始# MinSpareServers:  最小数量的服务器进程,保存备用# MaxSpareServers:  最大数量的服务器进程,保存备用# MaxRequestWorkers:  最大数量的服务器进程允许开始# MaxConnectionsPerChild: 最大连接数的一个服务器进程服务

希望可以帮助到你的啊!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式