您的位置:首页 > 运维架构 > Apache

Apache Bench对网站性能进行测试

2018-01-09 17:43 281 查看


1 简介

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


2 下载

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



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



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



这里就能看到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 Haus的网站:



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




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就能够看到提示信息了:



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

而不是:
http://www.baidu.com
1

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


4 使用方式

例如有一个请求,请求命令为:
ab.exe -n 500 -c 50 http://ip:8081/path[/code]1 
注意这里的: 
-n 500 

是说本次测试请求总数为500,而: 
-c 50 

是说本次请求并发数为50。

测试结果的截图如下:



如图列出了“请求命令”、“测试结果主体”、“所测试数据返回时间的百分比”,其中,“测试结果主体”如下所示:
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
1
2
3
4
5
6
7
8
9
10
11


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,即对于单个用户而言,平均每个请求的处理时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: