使用Apache Bench对网站性能进行测试

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/49248979
本文出自【我是干勾鱼的博客】

1 简介

Apache Bench简称ab,是Apache附带的一个工具,可以用来测试网站性能。通过ab指定命令发送请求后,可以得到每秒传送字节数、每秒处理请求数、每请求处理时间等统计数据。

2 下载

要使用ab,需要先下载Apache,从Apache首页进入下载页:

使用Apache Bench对网站性能进行测试_第1张图片

在下载页面中我们能看出,Apache目前最新的版本为2.4.17:

使用Apache Bench对网站性能进行测试_第2张图片

网上的教程大都是针对linux下ab的使用的,就不再赘述了。这里介绍一下Windows环境下ab的安装与使用。需要说明的一点,Apache官方只提供Apache的源码版,也就是source版,而不提供二进制版(Binaries)。一般来说各个平台下的Binaries版本都是一些社区或其它网站提供的,我们在Windows上使用ab,不可能拿着远吗再去用VS重新一遍吧,肯定直接用编译好的。所以在上图中选择Binaries,点进去,选择win32:

使用Apache Bench对网站性能进行测试_第3张图片

这里就能看到Windows平台下有关Apache的二进制版本的下载信息了。这里很明确的说明:


The Apache HTTP Server Project itself does not provide binary releases of software, only source code. Individual committers may provide binary packages as a convenience, but it is not a release deliverable.

If you cannot compile the Apache HTTP Server yourself, you can obtain a binary package from numerous binary distributions available on the Internet.

Popular options for deploying Apache httpd, and, optionally, PHP and MySQL, on Microsoft Windows, include:

  • ApacheHaus
  • Apache Lounge
  • BitNami WAMP Stack
  • WampServer
  • XAMPP

想获取二进制版本,可以选择一个网站来下载,这里我们选择第一个:

使用Apache Bench对网站性能进行测试_第4张图片

打开Apache Haus的网站:

使用Apache Bench对网站性能进行测试_第5张图片

在“Apache 2.4 Server Binaries”部分,选择“Apache 2.4.17 x64”这一项右边的德国国旗(看来镜像在德国):

使用Apache Bench对网站性能进行测试_第6张图片

3 依赖

这时候下载会自动开始,下载下来后:

这里写图片描述

将其解压到一个盘符的根目录,比如C盘的根目录,或者D盘的根目录,例如解压到D盘,则为:

D:\Apache24

这很重要,一会儿会作出说明。

同时解压出来的还有一个html文件,这个文件一定要看看,里面对Apache的使用有哪些注意事项做出了说明,比较重要的有几点:

  • 本机必须已安装“Visual C++ 2008 Redistributable Package”,如果没有安装,下载路径可以在刚才的下载页面找到。

  • Apache需要解压在任意一个盘符的根目录下,这就是所谓的“ServerRoot”,默认是配置在:{Apache24}\conf\httpd.conf这个文件中的。

准备好了之后,就可以运行bin目录下的httpd.exe文件,运行之后后台服务就启动起来了,任务管理器中可以看到两个进程:

这里写图片描述

这时候 在浏览器中输入:http://localhost/,如果能够看到Apache Haus的测试页面,就说明服务启动成功了。

这时候我们要使用Apache Bench的功能,在bin目录下,运行ab.exe就能够看到提示信息了:

使用Apache Bench对网站性能进行测试_第7张图片

这里一定要注意url中的path,也就是图中标红的地方,如果你要测试百度首页,那么url一定要写成:

http://www.baidu.com/path

而不是:

http://www.baidu.com

也就是一定要在需要测试的url末尾加一个path,否则测试时总会认为url非法。

4 使用方式

例如有一个请求,请求命令为:

ab.exe -n 500 -c 50 http://ip:8081/path

注意这里的:
-n 500
是说本次测试请求总数为500,而:
-c 50
是说本次请求并发数为50。

测试结果的截图如下:

使用Apache Bench对网站性能进行测试_第8张图片

如图列出了“请求命令”、“测试结果主体”、“所测试数据返回时间的百分比”,其中,“测试结果主体”如下所示:

Concurrency Level:      50
Time taken for tests:   32.626 seconds
Complete requests:      500
Failed requests:        0
Non-2xx responses:      500
Total transferred:      564000 bytes
HTML transferred:       479500 bytes
Requests per second:    15.33 [#/sec] (mean)
Time per request:       3262.587 [ms] (mean)
Time per request:       65.252 [ms] (mean, across all concurrent requests)
Transfer rate:          16.88 [Kbytes/sec] received

5 各参数含义

5.1 Concurrency Level

并发量

5.2 Time taken for tests

整个测试所用的时间

5.3 Complete requests

完成的请求数

5.4 Failed requests

失败的请求数

5.5 Non-2xx responses

如果接收到的HTTP响应数据的头信息中含有2XX以外的状态码,则会在测试结果中显示另一个名为“Non-2xx responses”的统计项,用于统计这部分请求数,这些请求并不算在失败的请求中。

5.6 Total transferred

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

5.7 HTML transferred:

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

5.8 Requests per second

吞吐率。要清楚吞吐率是与并发数相关的,即使请求总数相同,但如果并发数不一样,吞吐率还是很可能有很大差异的。
计算公式:Complete requests/Time taken for tests

5.9 Time per request(mean):

用户平均请求等待时间。也就是一次并发(在本例中为50)总的时间。
计算公式:Time token for tests/(Complete requests/Concurrency Level)。

5.10 Time per request(mean, across all concurrent requests)

服务器平均请求等待时间。也就是一次请求(在本例中也就是500中的平均每一次)所需时间。
计算公式:Time taken for tests/Complete requests
正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level。

5.11 Transfer rate

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

5.12 Percentage of requests served within a certain time(ms)

这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过6ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。

你可能感兴趣的:(测试)