日期:2014-05-17  浏览次数:20920 次

windows下修改apache并发数

修改apache的最大连接数,方法如下:

步骤一
先修改 /path/apache/conf/httpd.conf文件。
# vi httpd.conf
将“#Include conf/extra/httpd-mpm.conf”前面的 “#” 去掉,保存。

步骤二
再修改 /path/apache/conf/extra/httpd-mpm.conf文件。
# vi httpd-mpm.conf
找到 这一行

原:

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0

修改后

ServerLimit 1000 #最大并发
StartServers 10 #默认启动线程数
MinSpareServers 5
MaxSpareServers 15
MaxClients 1000 #apache可以同时处理的请求
ThreadsPerChild 250 #每个进程的线程数,子进程在启动时建立这些线程后就不再建立新的线程了。 默认值是64, 最大值是1920
MaxRequestsPerChild 5000 #默认0 官方参考手册中不建议设置为0, 主要基于两点考虑: (1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存; (2) 给进程一个有限寿命, #从而有助于当服务器负载减轻的时候减少活动进程的数量。



注意:
ServerLimit 该指令一定要放在第一行。

修改后,一定不要apachectl restart,而是先 apachectl stop 然后再 apachectl start才可以。

---------------------------------------------------------------

如果你按照上面做的话,你会发现好像没什么效果(至少我是这样),因为win2003下并不是使用mpm_prefork_module ,而是mpm_winnt_module ,ServerLimit 1000在是mpm_winnt_module下是无效的,找了一个下午没有找到增大window下apahce并发数的方法,猜测可能和最大并发数也就是服务器的最大连接数?

2011-8-27

今天又琢磨了一下,还是修改 conf/extra/httpd-mpm.conf 文件,既然windows下是用 mpm_winnt_module ,那就修改这个试一试

我的默认是

<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxRequestsPerChild 0
</IfModule>

ab测试并发大概在250左右时就不行了。

尝试修改

ThreadsPerChild 250
MaxRequestsPerChild 5000

ab测试大概在 300多不行,修改 ThreadsPerChild 还是有效果的

好像最大并发数大概是ThreadsPerChild 的1.5倍(瞎猜的,你试试)

?