性能测试工具之Apache ab

一、apache ab简介

ab全称ApacheBench,是著名的Web服务器软件apache附带的一款非常简单的压力测试工具,它可以同时模拟多个并发请求,测试Web服务器最大承受压力。Apache的下载地址为:http://tomcat.apache.org/。

二、apache ab路径

Linux下源码安装,它所在的目录是apache安装目录的bin目录下

性能测试工具之Apache ab

三、apache ab常用参数介绍

性能测试工具之Apache ab

-n:表示请求总数

-c:表示并发用户数,并发用户数不能大于请求总数

-t:测试最大时间,单位为秒,默认隐藏为50000

四、apache ab使用

./ab -c 10 -n 200 http://andashu.blog.51cto.com/

性能测试工具之Apache ab

通过上图,测试结果一目了然,详细说明如下:

Server Software:表示被测试的Web服务器软件名称。

Server Hostname:表示请求的URL主机名。

Server Port:表示被测试的Web服务器软件的监听端口。

Document Path:表示请求的URL中的根绝对路径,通过该文件的后缀名,我们一般可以了解该请求的类型。

Document Length:表示HTTP响应数据的正文长度。

Concurrency Level:表示并发用户数,这是我们设置的参数之一。

Time taken for tests:表示所有这些请求被处理完成所花费的总时间。

Complete requests:表示总请求数量,这是我们设置的参数之一。

Failed requests:表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况。如果接收到的HTTP响应数据的头信息中含有2XX以外的状态码,则会在测试结果中显示另一个名为“Non-2xx responses”的统计项,用于统计这部分请求数,这些请求并不算在失败的请求中。

Total transferred:表示所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,仅仅为web服务器流向用户PC的应用层数据总长度。

HTML transferred:表示所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度。

Requests per second:吞吐率,计算公式:Complete requests/Time taken for tests,相当于Loadrunner中的TPS。

Time per request:用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。

Time per requet(across all concurrent request):服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level。

Transfer rate:表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。

Percentage of requests served within a certain time(ms):这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过100ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。

上面的测试结果表明:在10个并发的情况下,访问网址的响应时间都在100毫秒以内。可以根据以上测试数据设定一个测试目标,比如要求99%的响应时间都在500ms以内,就可以设定不同的并发用户数进行测试,从而测试出最终满足结果的并发数。

五、总结

虽然apache ab使用起来比较简单,但是它也有它的局限性。

1、apache ab判断成功与否只是判断2xx的响应码,不能接收服务器的返回值。所以相比Loadrunner和Jmeter等测试工具,它测试的并发数会大于Loadrunner个Jmeter,TPS也会比Loadrunner和Jmeter大。

2、apache ab测试的并发数与其所运行的服务器的CPU颗粒数有很大关系,CPU颗粒数越大,测试结果所支持的并发数就越大

3、apache ab适合测试HTTP协议的一个URL连接的并发,特别是测试系统的首页。apache ab也能进行参数传递,一样能实现传递一个用户名和密码这样带参数传递的性能测试,但是对于复杂场景还是建议用Loadrunner和Jmeter来测试。

4、对于简单的测试,像一个接口测试,可以选用apache ab快速进行测试。

5、开发人员在Linux下用apache ab测试的TPS的值会比用Loadrunner和Jmeter测试的值大,原因是因为:apache ab不接收服务器返回的值,所以响应就网络带宽上回占有一定的优势。