MPM

1.查看当前模式 httpd -l

C:\wamp\bin\apache\Apache2.2.17\bin>httpd -l
Compiled in modules:
  core.c
  mod_win32.c
  mpm_winnt.c
  http_core.c
  mod_so.c

 2.修改apache/conf/extra/httpd-mpm.conf

linux下一般用 prefork模式

<IfModule mpm_prefork_module>
    StartServers          5    //预先启动进程
    MinSpareServers       5    //最小空闲进程
    MaxSpareServers      10    //最大空闲进程
    MaxClients          150    //最大并发量
    MaxRequestsPerChild   0    //每个进程在处理了多少次请求之后自动销毁
</IfModule>

当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
如果空闲进程大于MaxSpareServers,Apache将会删除多余的空闲进程,释放服务器资源。
进程数的最大值由MaxClients控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients ≤ ServerLimit ≤ 20000
MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程),在HTTPD占用内存过大的时候可以设置为50、100来及时销毁,防止内存泄露。

3.推荐配置,对大部分中型网站

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    ServerLimit         1500
    MaxClients          1000
    MaxRequestsPerChild   0
</IfModule>

 4.计算MaxClients
连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU、内存、带宽等都有关系。
1)最大client联接数的算法
查看当前的连接数可以用:

ps aux | grep httpd | wc -l

 或:

pgrep httpd|wc -l

 或 实时检测HTTPD连接数

watch -n 1 -d “pgrep httpd|wc -l”

2) 计算httpd占用内存的平均数(K):

ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'

 由于基本都是静态页面,CPU消耗很低,每进程占用内存也不算多,大约200K。

假如服务器内存有2G,除去常规启动的服务大约需要500M(保守估计),还剩1.5G可用,那么理论上可以支持1.5*1024*1024*1024/200000 = 8053.06368

 

约8K个进程,支持2W人同时访问应该是没有问题的(能保证其中8K的人访问很快,其他的可能需要等待1、2秒才能连上,而一旦连上就会很流畅)

 

控制最大连接数的MaxClients ,因此可以尝试配置为:
<IfModule mpm_prefork_module>
StartServers                      5
MinSpareServers                   5
MaxSpareServers                  10
ServerLimit                    5500
MaxClients                     5000
MaxRequestsPerChild               100
</IfModule>

 

注意,MaxClients默认最大为250,若要超过这个值就要显式设置ServerLimit,且ServerLimit要放在 MaxClients之前,值要不小于MaxClients,不然重启httpd时会有提示。重启httpd后,通过反复执行pgrep httpd|wc -l 来观察连接数,可以看到连接数在达到MaxClients的设值后不再增加,但此时访问网站也很流畅,那就不用贪心再设置更高的值了,不然以后如果网站访 问突增不小心就会耗光服务器内存,可根据以后访问压力趋势及内存的占用变化再逐渐调整,直到找到一个最优的设置值。

 

(MaxRequestsPerChild不能设置为0,可能会因内存泄露导致服务器崩溃)

 

转载于:https://www.cnblogs.com/fenle/p/4470266.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值