默认安装在/usr/bin/ab
/usr/bin/ab -n 100 -c 100 http://192.168.4.51/ci/index.php/home/login/index
-n : 请求次数
-c :并发数,即同时多少人访问
Server Software: web服务器软件及版本
Server Hostname: 请求的地址
Server Port: 请求的端口
Document Path: 请求的页面路径
Document Length: 页面大小
Concurrency Level: 并发数
Time taken for tests: 测试总共花费的时间
Complete requests: 完成的请求数
Failed requests: 失败的请求数
Write errors: 写入错误
Total transferred: 总共传输字节数,包含http的头信息等
HTML transferred: html字节数,实际的页面传递字节数
Requests per second: 每秒处理的请求数,服务器的吞吐量(重要)
Time per request: 平均数,用户平均请求等待时间
Time per request: 服务器平均处理时间
Transfer rate: 平均传输速率(每秒收到的速率)
实例
Server Software: Apache/2.2.15
Server Hostname: 192.168.4.51
Server Port: 80
Document Path: /ci/index.php/home/login/index
Document Length: 2079 bytes
Concurrency Level: 100------------------------并发数
Time taken for tests: 1.636 seconds--------------花费的总时间
Complete requests: 100------------------------请求次数
Failed requests: 0--------------------------失败次数
Write errors: 0
Total transferred: 246800 bytes
HTML transferred: 207900 bytes
Requests per second: 61.13 [#/sec] (mean)-----------------一秒完成多少个请求
Time per request: 1635.852 [ms] (mean)-----------------<span style="font-family: Arial, Helvetica, sans-serif;">100人请求一次的时间</span>
Time per request: 16.359 [ms] (mean, across all concurrent requests)----------------1人请求一次的时间
Transfer rate: 147.33 [Kbytes/sec] received
其它注意事项
1)
ab并发数不能大于请求数,会提示
ab: Cannot use concurrency level greater than total number of requests
2)
请求数默认不能超过1024个,会提示
socket: Too many open files (24)
可用ulimit -n命令修改,例如:ulimit -n 8192 (设置用户可以同时打开的最大文件数)。
3)
并发数默认不能大于20000个,会提示
ab: Invalid Concurrency [Range 0..20000]
需要修改apache源代码support目录下ab.c文件,找到:
#define MAX_CONCURRENCY 20000
将宏定义的值改大,重新编译安装apache。
4)
提示
apr_socket_recv: Connection reset by peer (104)
其实并发数超过服务器硬件负荷就会报这个错误
网上说是apr-util有些问题,不太稳定,多试几次就好了。
5)
还有单独的apache bench源码包,及如何单独安装ab教程
下载:http://apachebench-standalone.googlecode.com/files/ab-standalone-0.1.tar.bz2
安装教程:https://code.google.com/p/apachebench-standalone/wiki/HowToBuild
6)测试时发现有如下错误
...
Failed requests: 998
(Connect: 0, Receive: 0, Length: 998, Exceptions: 0)
...
是因为在测试动态页面时,返回的长度和第一次不同,所以ab就判断失败了,对于动态页面这是合理的。可参考:http://mib168.iteye.com/blog/1299990