Apache提高并发数和线程的方法

Apace安装目录/conf/extra目录中有一个名为httpd-mpm.conf的配置文件。该文件主要用于进行MPM模块的相关配置。不过,在默认情况下,Apache的MPM模块配置文件并没有启用。因此,我们需要在httpd.conf文件中启用该配置文件,如下所示:

# Server-pool management (MPM specific) 
Include conf/extra/httpd-mpm.conf (去掉该行前面的注释符号"#")

 

在 httpd.conf 后面直接添加

优化配置: 

服务器启动时建立的线程数 StartServers 200 
空闲子进程的最小数量 MinSpareServers 100 
空闲子进程的最大数量 MaxSpareServers 200 
允许同时伺服的最大接入请求数量 MaxClients 800 
每个子进程在其生存期内允许伺服的最大请求数量 MaxRequestsPerChild 3000

代码:

根据apache实际开启的服务情况添加,我的用的是第二个,不清楚的话2个都开启

# Unix/Linux系统用这个
<IfModule mpm_prefork_module> 
StartServers 50 #推荐设置:小=默认 中=20~50 大=50~100
MinSpareServers 50 #推荐设置:与StartServers保持一致
MaxSpareServers 80 #推荐设置:小=20 中=30~80 大=80~120
MaxClients 1500 #推荐设置:小=500 中=500~1500 大型=1500~3000
MaxRequestsPerChild 50000 #推荐设置:小=10000 中或大=10000~500000(此外,还需额外设置ServerLimit参数,该参数最好与MaxClients的值保持一致。)
</IfModule>


# Windows系统用这个
<IfModule mpm_winnt_module>
ThreadsPerChild 2000 #推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
MaxRequestsPerChild 20000 #推荐设置:小=10000 中或大=20000~100000
</IfModule>

event MPM

这个是Apache中最新的模式,在现在版本里的已经是稳定可用的模式。它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。

event MPM在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。官方自带的模块,全部是支持event MPM的。

注意一点,event MPM需要Linux系统(Linux 2.6+)对EPoll的支持,才能启用。

还有,需要补充的是HTTPS的连接(SSL),它的运行模式仍然是类似worker的方式,线程会被一直占用,知道连接关闭。部分比较老的资料里,说event MPM不支持SSL,那个说法是几年前的说法,现在已经支持了。

Apache的httpd.conf中的配置方式:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值