-X proxy:port Proxyserver and port number to use
-V Print version number and exit
-k Use HTTP KeepAlive feature
-d Do not show percentiles served table.
-S Do not show confidence estimators and warnings.
-g filename Output collected data to gnuplot format file.
-e filename Output CSV file with percentages served
-h Display usage information (this message)
参数很多,一般我们用 -c 和 -n 参数就可以了。例如:
ab -c 2 -n 10 www.51ste.com/
结果参数分析说明:
Document Path:测试页面
Document Length: 页面大小
Concurrency Level: 测试的并发数
Time taken for tests:整个测试持续的时间
Complete requests:完成的请求数量
Failed requests: 失败的请求数量
Write errors: 0
Total transferred: 整个过程中的网络传输量
HTML transferred: 整个过程中的HTML内容传输量
Requests per second: 最重要的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值
Time per request: 最重要的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值
Time per request: 每个连接请求实际运行时间的平均值
Transfer rate: 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
常见的一些坑
1)请求URL地址必须为指定格式 [http://]hostname[:port]/path,如果hostname后面不带“/”,大家可以试试会发生什么?
2)ab发送的是http1.0请求。
3)-t可以指定时间,-n指定发送请求总数,同时使用时压测会在-t秒或者发送了-n个请求之后停止。但是-t一定要在-n之前(ab的bug,-n在-t之前最多只会跑5s)。
4)为了使测试结果更可靠,单次压测时间应在2分钟以上。
理论上,压测时间越长,结果误差越小。同时,可以在瓶颈附近进行长时间压测,例如一个小时或者一天,可以用来测试系统稳定性。许多系统的bug都是在持续压力下才会暴露出来。
5)小心压测客户端成为瓶颈。
例如上传,下载接口的压测,此时压测客户端的网络上行,下行速度都会有瓶颈,千万小心服务器还没到达瓶颈时,客户端先到了瓶颈。此时,可以利用多客户端同时压测。
6)ab可以将参数写入文件中,用此种方式可以测试上传文件的接口。此时需要配合-p -t 使用,如:ab -n 10000 -c 10 -p post_img.txt -T "multipart/form-data;type=img/jpg" http://xxxx/path