WEB压力测试工具之ApacheBench

AdminPi, 运维, 2021-04-08 19:00:00

项目上线前,压力测试是必不可少的一环。很多问题,只有让服务器在高压状态下运行,才会暴露出来。如果不做压测就上线,那么就请做好半夜随时被电话吵醒的准备。

今天我们介绍一款使用广、易上手的压力测试工具ApacheBench,简称ab。它是大名鼎鼎的Web服务器Apache自带的测试工具。ab的工作原理是模拟多个访客对指定的URL进行访问,测试时虽然对本地计算机的配置要求不高,但大量的请求会对服务器瞬间造成巨大的负载,如果一次上太多并发请求,很容易导致服务器死机,所以测试时一定要谨慎,并发数要循序渐进。

下面介绍三种常用的测试方法:

1.最基本的用法:

ab -n 100 -c 10 http://www.domain.com/

说明:向该网址发送100次请求,并发数为10(末尾的斜杠必须有)。

2.带Cookie的测试:

ab -n 100 -c 10 -C "name=hanmeimei;sex=female" http://www.domain.com/

注意C为大写,服务器将接收到name和sex两个Cookie的值。

3.带post请求的测试:

ab -n 100 -c 10 -T "application/x-www-form-urlencoded" -p post.txt http://www.domain.com/

参数T为数据编码,post.txt为保存post数据的文档,为保险起见,建议对post数据进行urlencode编码。post.txt内容如下:

name=hanmeimei&sex=female

服务器端会接收到name和sex两组post数据。

测试结果分析:

测试结束后会返回很多详细的数据,比较重要的有几组:

1.Requests per second:每秒事务数;

2.Time per request:平均事务响应时间;

3.Percentage of the requests served within a certain time (ms):在某一响应时间内完成响应请求的百分比。

常见报错:

apr_pollset_poll: The timeout specified has expired (70007)

出现这个报错,一般都是因为timeout连接超时了,可以加参数k:

ab -n 100 -c 10 -k http://www.domain.com/

当网络不稳定,存在波动的情况下,ab可能会中断测试并退出,为了避免这种情况发生,可以增加一个r参数:

ab -n 100 -c 10 -k -r http://www.domain.com/

-r参数似乎在Windows下无法使用。

© 2024