PHP使用Apache中的ab(ApacheBench)测试网站的并发量以及常见问题
AB(ApacheBench) 是 Apache 自带的超文本传输协议 (HTTP) 性能测试工具。 其设计意图是描绘当前所安装的 Apache 的执行性能, 主要是显示 Apache 每秒可以处理多少个请求。
打开Apache服务器的安装路径(以xampp为例来说明),在bin目录中有一个ab.exe的可执行程序,它就是要介绍的网站并发量测试工具。
一, 工具使用方法:
首先需要注意的是,直接双击是无法正确运行的。在Windows系统的命令行下,进入ab.exe程序所在的目录,执行改程序。
d:(回车/进入D盘)
cd D:\xampp\apache\bin 进入bin目录
启动ab,如果显示如下,则说明启动成功
二, 参数说明:
ab常用参数的介绍:
-n requests :Number of requests to perform(总共的请求执行数,缺省是1);
-c concurrency : Number of multiple requests to make(并发数,缺省是1);
-t timelimit :Seconds to max. wait for responses(测试所进行的总时间,秒为单位,缺省50000s);
-p postfile : File containing data to POST. Remember also to set -T(POST时的数据文件)
-u putfile File containing data to PUT. Remember also to set -T(GET时的数据文件)
-w : Print out results in HTML tables(以HTML表的格式输出结果)
开始启动ab 测试
ab -n 10000 -c 2000 http://localhost:88/test/testXY.php 表示这个脚本运行10000次,2000并发(模拟2000个用户同时访问)
结果显示如下:
常见问题
问题1 apr_socket_connect(): 由于目标计算机积极拒绝,无法连接。 (730061) Total of 45
遇到这样的情况通常是你开的并行数量太多了。。。
比如:ab -c 1000 -n 10000 http://localhost/index.html 如此大的请求就会挂掉,只是还是有补救措施的,能够通过添加并发数上限解决问题,过程例如以下:
1、停止Apache服务;
2、找到apache/conf/httpd.conf文件,用文本编辑器打开找到这两行:# Server-pool management (MPM specific)
# Include conf/extra/httpd-mpm.conf
把第二行include........这行的凝视去掉。
3、找到apache/conf/extra/httpd-mpm.conf文件,打开。找到:
<IfModule mpm_winnt_module>ThreadsPerChild 150
MaxRequestsPerChild 0
</IfModule>
把上面的150调大。Windows下最大为1920.
注意:尖括号中的名字是winnt,不要看错了
4、又一次启动Apache服务.