在默认状况下,apache的最大并发数为150,所以须要调整linux
首先搞清楚当前apache是什么MPM(多路处理模块)。通俗讲就是apahce处理多并发的方式,常见的有三种apache
perfork,,worker,winnt模编程
prefork的工做原理并发
控制进程在最初创建“StartServers”个子进程后,为了知足MinSpareServers设置的须要建立一个进程,等待一秒钟,继续建立两 个,再等待一秒钟,继续建立四个……如此按指数级增长建立的进程数,最多达到每秒32个,直到知足MinSpareServers设置的值为止。这就是预 派生(prefork)的由来.这种模式能够没必要在请求到来时再产生新的进程,从而减少了系统开销以增长性能。性能
worker的工做原理网站
由主控制进程生成“StartServers”个子进程,每一个子进程中包含固定的ThreadsPerChild 线程数,各个线程独立地处理请求。一样,为了避免在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最 多的空闲线程数;而MaxClients设置了全部子进程中的线程总数.若是现有子进程中的线程总数不能知足负载,控制进程将派生新的子进 程。 线程
利用httpd命令来控制进程
#httpd.exe -lci
当前为winnt.c模式it
如何调整最大并发数
① 首先打开apache 的httpd.conf
?
1
2
3
# Server-pool management (MPM specific)
#打开mpm文件配置
Include conf/extra/httpd-mpm.conf
② 打开httpd-mpm.conf
找到winnt模块
?
1
2
3
4
5
6
<IfModule mpm_winnt_module>
//最大并发连接数
ThreadsPerChild 150
//子进程能够建立的最大进程数
MaxRequestsPerChild 0
</IfModule>
对于并发数,推荐配置:
若是咱们的网站是中型网站, 建议在1500-2500之间。
由于在 linux 下,通常说采用的 MPM 是 perfork 模式,咱们看看如何配置 .
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150 #并发量
MaxRequestsPerChild 0 #一个进程对应的线程数,对 worker更用.
</IfModule>
给你们一个合理的建议配置. 对大部分网站,中型网站,配置:
<IfModule mpm_prefork_module>
StartServers 5 #预先启动
MinSpareServers 5
MaxSpareServers 10 #最大空闲进程
ServerLimit 2500 #用于修改apache编译参数
MaxClients 2000 #最大并发数
MaxRequestsPerChild 0
</IfModule>
若是你的网站pv值 百万
ServerLimit 2500 #用于修改apache编程参数
MaxClients 2000 #最大并发数