介绍一款测试压力的工具 ab.exe 该工具程序是apache自带的(在C:\xampp\apache\bin目录下,具体目录根据自己安装的apache确定)。
基本用法,首先需要进入到cmd 控制台。
然后执行以下命令:
ab.exe –n 访问的总次数 –c 有多少人访问(并发量) 访问的页面url
实例:
ab.exe –n 10000 –c 100 http://locahost:8080/ab/test.php
执行以上命令会得到如下结果:红色的标注是我们需要注意的。
当我们把 –c 调整到1000时,发现apache瘫痪。
我们可以通过调整最大并发的方式来进行处理。下面我们来说说怎样调整apache的最大并发量。
MPM (多路处理模块, 即 apache采用怎样的方式来处理并发.), 主要有三种方式
1:perfork 预处理进程方式
2:worker 工作模式
3:winnt 这个一般说是windows采用。
原理示意图:
如何设置我们的apache的最大并发数 ,步骤如下:
(1) 在httpd.conf 文件中 修改
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
(2) 确定当前的apahce是什么MPM模式
进入到 apache/bin
httpd.exe –l
说明: 看 mpm_xxx.c 如果xxx是 winnt 说明是winnt ,另外还可能是 perfork 或者 worker
(3) 修改httpd-mpm.conf 文件.
<IfModule mpm_winnt_module>
ThreadsPerChild 1000
MaxRequestsPerChild 0
</IfModule>
(4) 重启apahce ,测试(我测试将ThreadsPerChild 改为1000的时候最高 -c 可以到500,500以上就崩了。如果没有修改的话,500就会崩。)
因为在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 1500 #用于修改apache编程参数
MaxClients 1000 #最大并发数
MaxRequestsPerChild 0
</IfModule>
如果你的网站pv值 百万
ServerLimit 2500 #用于修改apache编程参数
MaxClients 2000 #最大并发数